Câu hỏi & Bài tập Chương Cây – Cây nhị phân tìm kiếm – Cây nhị phân tìm kiếm cân Phần câu hỏi ơn kiến thức: Trình bày định nghĩa cây, tính chất số ứng dụng Trình bày định nghĩa nhị phân, tính chất nhị phân số ứng dụng nhị phân Trình bày định nghĩa nhị phân tìm kiếm, tính chất nhị phân tìm kiếm số ứng dụng nhị phân tìm kiếm Trình bày kiểu duyệt nhị phân cho ví dụ minh họa Xét thuật giải tạo nhị phân tìm kiếm Nếu thứ tự khóa nhập vào sau: 20 11 30 18 hình ảnh tạo nào? Nếu hủy nút 5, 20 thay đổi bước hủy, vẽ sơ đồ 6.Giả sử cho hình sau: A B C D G E H I F J a Trình bày thứ tự duyệt nút theo thứ tự trước b Trình bày thứ tự duyệt nút theo thứ tự c Trình bày thứ tự duyệt nút theo thứ tự sau 7.Hãy vẽ nhị phân có độ cao 3, kết duyệt theo thứ tự sau cho ta dãy khóa là: (10, 30, 50, 20, 40, 70, 60) 8.Cho nhị phân hình sau, trình bày cách biểu diễn cấu trúc mảng, cấu trúc danh sách liên kết cho a) I F B G A B J E A b) D D H E C C G J F I H K 9.Giả sử cho nhị phân hình cho Hãy trình bày thứ tự đỉnh xuất duyệt theo thứ tự trước, sau a) D b) B F C E A H B C I D F E A H G I G 10.Cho dãy số sau: 20, 5, 1, 17, 30, 24, 7, 8, 25, 32, 50, 18, 99, 68, 29, 50 Hãy thực yêu cầu sau: a Xây dựng nhị phân tìm kiếm từ dãy số cho theo thứ tự thêm số vào theo thứ tự từ trái sang dãy số b Xóa khỏi nút chứa khóa 24, 20, 17, 5, 29, 68 Mỗi lần xóa nút vẽ lại cân lại bị cân Bài tập: Cài đặt chương trình mơ trực quan thao tác nhị phân tìm kiếm 2 Cài đặt chương trình mô trực quan thao tác nhị phân tìm kiếm cân 3.Giả sử cho thơng tin sinh viên bao gồm thông tin: - Mã sinh viên : dạng số nguyên dương, mã sinh viên giá trị để phân biệt - Họ sinh viên : dạng chuỗi - Tên sinh viên : dạng chuỗi - Điểm trung bình học tập : dạng số thực, có miền giá trị từ 0.0 đến 10.0 Hãy thực yêu cầu sau: a Khai báo cấu trúc nhị phân tìm kiếm để lưu thơng tin sinh viên theo mô tả b Viết hàm thêm sinh viên vào c Viết hàm xóa sinh viên có điểm trung bình < 5.0 khỏi d Viết hàm hiển thị danh sách sinh viên duyệt theo thứ tự trước 4.Giả sử cho danh sách từ khóa ngơn ngữ C sau: struct, typedef, int, void, return, for, while, goto, else, continue, break, main Hãy thực yêu cầu sau: a Khai báo cấu trúc nhị phân tìm kiếm để lưu thơng tin từ khóa theo mô tả b Viết hàm thêm từ khóa vào c Viết hàm hiển thị danh sách từ khóa lưu duyệt theo thứ tự sau 5.Giả sử cho biểu thức số học sau: (A – B) – C A – (B – C) A / (B – (C – (D – (E – F)))) ((A * (B + C)) / (D – (E + F))) * (G / (H / (I *J))) Hãy thực yêu cầu sau: a Khai báo cấu trúc liệu để lưu biểu thức trường hợp tổng quát b Giả sử ký tự A, B, C, D, E, F, G, H, I, J thay số, viết hàm tính giá trị biểu thức cho trường hợp tổng quát 6.Hãy vẽ nhị phân bao gồm ký tự kết duyệt theo thứ tự có kết sau: G, F, H, K, D, L, A, W, R, Q, P, Z 7.Hãy vẽ nhị phân bao gồm ký tự kết duyệt theo thứ tự trước có kết sau: A, D, F, G, H, K, L, P, Q, R, W, Z 8.Hãy vẽ nhị phân bao gồm ký tự kết duyệt theo thứ tự sau có kết sau: F, G, H, D, A, L, P, Q, R Z, W, K 9.Cho nhị phân T, thực yêu cầu sau: a Viết hàm hiển thị danh sách nút cây, rỗng in giá trị NULL b Viết hàm tính chiều cao cây, rỗng in giá trị NULL c Viết hàm in nút mức K cây, biết K nằm phạm vi chiều cao cây, rỗng in giá trị NULL 10.Xét cấu trúc liệu sau ngôn ngữ C định nghĩa nhị phân: struct Tnode { int key; // liệu nút struct Tnode *left; struct Tnode *right; }; typedef struct Tnode treeNode; Hãy thực yêu cầu sau: a Viết hàm int countLeaft (treeNode *Root, int k) trả lại số lượng trỏ trỏ Root b Viết hàm int OddSum (treeNode *Root) trả lại tổng số lẻ lưu nút nhị phân với gốc trỏ trỏ Root c Viết hàm int Sum (treeNode *Root) trả lại giá trị tổng giá trị số lưu nút nhị phân với gốc trỏ trỏ Root d Viết hàm int EvenLeaf (treeNode *Root) trả lại số lượng nút với trường liệu key nút số chẵn với gốc cho trỏ Root e Viết hàm int countNodes (treeNode *Root, int k) trả lại số nút có trường key lớn k trỏ trỏ Root 11.Xét cấu trúc liệu biểu diễn nhị phân tìm kiếm: struct TreeNode { int info; // liệu nút struct TreeNode *left; struct TreeNode *right; }; Hãy thực yêu cầu sau: a Viết hàm int EvenMax (TreeNode *Root) nhận đầu vào Root trỏ đến gốc nhị phân tìm kiếm, trả lại giá trị info chẵn lớn nút nhị phân cho b Gọi T(n) thời gian tính hàm câu 1a), đưa đánh giá cho T(n), n số lượng nút nhị phân đầu vào 12.Xét cấu trúc liệu mô tả nhị phân sau : struct TreeNode { int info; // liệu nút struct TreeNode *left; struct TreeNode *right; }; Hãy viết hàm bool IsLeft (TreeNode *Root, int key) nhận đầu vào trỏ Root đến gốc cây, trả lại giá trị true nút có trường info nhỏ key Bài tập áp dụng: Viết chương trình cho phép tạo, tra cứu sửa chữa từ điển Anh-Việt sử dụng cấu trúc Viết chương trình cho phép tạo, tra cứu sách thư viện sử dụng cấu trúc bảng băm Các tập khác Giảng viên đề nghị