Chuyên đề Tin học 12 Bài 6 (Kết nối tri thức): Cây nhị phân

Với giải bài tập Chuyên đề Tin học 12 Bài 6: Cây nhị phân sách Kết nối tri thức hay nhất, chi tiết giúp học sinh dễ dàng làm bài tập Chuyên đề học tập Tin học 12 Bài 6.

1 162 17/07/2024


Giải Chuyên đề Tin học 12 Bài 6: Cây nhị phân

Khởi động trang 23 Chuyên đề Tin học 12:

1. Quan sát các sơ đồ biểu diễn thông tin trong Hình 6.1, em có nhận xét gì?

2. Các sơ đồ này có những đặc điểm chung gì?

Quan sát các sơ đồ biểu diễn thông tin trong Hình 6.1, em có nhận xét gì?

Lời giải:

1. Quan sát các sơ đồ biểu diễn thông tin trong Hình 6.1, em có nhận xét sau:

a) Các thư mục được chia thành các thư mục nhỏ hơn và nhỏ dần hơn giúp dễ dàng phân loại thư mục có điểm chung hơn.

b) Ở mỗi nút sẽ chia thành 2 nhánh. Càng sâu sẽ càng nhiều nút.

c) Trong sơ đồ tư duy, từ chủ đề chính chia thành các nhánh nhỏ hơn để giúp biết thêm thông tin về chủ đề chính.

2. Điểm chung: Các sơ đồ đều xuất phát từ một ý tổng rồi chia lần lượt thành các nhánh nhỏ dần.

1. Cấu trúc cây và cây nhị phân

Hoạt động 1 trang 23 Chuyên đề Tin học 12: Đọc, quan sát, qua sát thảo luận về khái niệm và cấu trúc cây. Với mỗi sơ đồ cây đã được mô tả trong hoạt động khởi động, hãy chỉ ra nút gốc, nút nhánh, nút lá và tính chiều cao của cây.

Lời giải:

- Nút gốc không có nút cha.

- Nút nhánh là nút có nút con.

- Nút lá là nút không có nút con.

- Chiều cao của cây là độ dài đường đi đến nút lá sâu nhất, hay chính là mức cao nhất của các nút trên cây.

Câu hỏi 1 trang 24 Chuyên đề Tin học 12: Tìm thêm các ví dụ cấu trúc cây.

Lời giải:

Ví dụ cấu trúc cây: Cây cối, Sinh học (Thực vật và động vật), Hệ thống các tệp, Mạng máy tính…

Câu hỏi 2 trang 24 Chuyên đề Tin học 12: Vẽ sơ đồ cây cho các biểu thức toán học sau:

a) (x + y)*(x – (y + z)/t).

b) x + (y + (z + t)/(u – v)).

Lời giải:

a)

Vẽ sơ đồ cây cho các biểu thức toán học sau (x + y)*(x – (y + z)/t)

b)

Vẽ sơ đồ cây cho các biểu thức toán học sau (x + y)*(x – (y + z)/t)

Câu hỏi 3 trang 24 Chuyên đề Tin học 12: Tính chiều cao của các cây trong Hình 6.3.

Tính chiều cao của các cây trong Hình 6.3 trang 24 Chuyên đề Tin học 12

Lời giải:

a) Chiều cao: 4

b) Chiều cao: 5

2. Biểu diễn cây nhị phân bằng mảng 1 chiều

Hoạt động 2 trang 25 Chuyên đề Tin học 12: Đọc và thảo luận nhóm để tìm hiểu phân loại cây nhị phân và một số cách biểu diễn cây nhị phân bằng mảng 1 chiều hoặc bằng nút liên kết.

Lời giải:

Phân loại cây nhị phân như sau:

- Cây nhị phân được gọi là hoàn hảo nếu mọi nút của cây đều có đủ hai nút con và tất cả các nút lá đều cùng mức.

- Cây nhị phân được gọi là hoan chỉnh nếu tại mức i có 2i nút và tại mức h thì các nút liên tục tính từ trái sang phải, có thể khuyết một số nút bên trái, với h là chiều cao của cây.

Một số cách biểu diễn cây nhị phân bằng mảng 1 chiều hoặc bằng nút liên kết:

- Mảng 1 chiều: nếu cho trước 1 mảng 1 chiều có thể dễ dàng thiết lập cây nhị phân hoàn chỉnh tương ứng với mảng này. Nút gốc của cây sẽ tương ứng với phần tử đầu tiên của mảng với chỉ số 0. Các phần tử tiếp theo sẽ tương ứng với chỉ số các nút của cây theo thứ tự từng mức, từ trái sang phải.

- Biểu diễn cây nhị phân bằng nút liên kết: Cây có một nút gốc, mỗi nút có thể có nhiều nút con. Thông thường, cấu trúc của cây là cấu trúc liên kết.

Đọc và thảo luận nhóm để tìm hiểu phân loại cây nhị phân và một số cách biểu diễn

Câu hỏi 1 trang 26 Chuyên đề Tin học 12: Cho mảng A = [2, 1, 8, 10, 0, 5, 9], biểu diễn cây nhị phân hoàn chỉnh. Hãy chỉ ra dãy các nút đi từ nút lá 9 về nút gốc 2.

Lời giải:

- Nút 9 là nút lá ở chỉ số 6.

- Chỉ số của cha nút 9 là (6-1)//2 = 2, tức là nút 8.

- Chỉ số của cha nút 8 là (2-1)//2 = 0, tức là nút 2.

Như vậy, dãy các nút đi từ nút lá 9 về nút gốc 2 là: 9 -> 8 -> 2.

Cho mảng A = [2, 1, 8, 10, 0, 5, 9], biểu diễn cây nhị phân hoàn chỉnh

Câu hỏi 2 trang 26 Chuyên đề Tin học 12: Cho mảng A có 14 phần tử, biểu diễn cây nhị phân hoàn chỉnh. Tính chiều cao của cây nhị phân này.

Lưu ý: Cây nhị phân tổng quát cũng có thể được biểu diễn bằng mảng một chiều bằng cách bổ sung các nút rỗng có giá trị None để tạo thành cây hoàn chỉnh, sau đó biểu diễn mảng như đã nêu trên. Ví dụ sau minh hoạ cho ý tưởng này.

Cho mảng A có 14 phần tử, biểu diễn cây nhị phân hoàn chỉnh. Tính chiều cao của cây

Lời giải:

a) Chiều cao của cây nhị phân là: 3

b) Chiều cao của cây nhị phân là: 3

3. Các thuật toán duyệt cây nhị phân

Hoạt động 3 trang 27 Chuyên đề Tin học 12: Trao đổi, thảo luận và thực hiện các thuật toán duyệt cây nhị phân. Bài toán đặt ra là cần duyệt tất cả các nút của cây nhị phân, mỗi nút duyệt 1 lần.

Lời giải:

a) Duyệt trước: Cây con có nút gốc v được gọi là cây v như minh hoạ ở Hình 6.9. Ý tưởng của phương pháp duyệt trước là bắt đầu từ nút gốc, sau đó duyệt cây con trái. Duyệt xong cây con trái thì sang duyệt cây con phải.

b) Duyệt sau: là duyệt toàn bộ cây con trái, sau dó duyệt toàn bộ cây con phải, cuối cùng duyệt nút gốc.

c) Duyệt giữa: là duyệt cây con trước, sau đó duyệt nút gốc, cuối dùng duyệt cây con phải.

Câu hỏi 1 trang 29 Chuyên đề Tin học 12: Cho mảng [A, B, C, D, E, F, G, H, I, J] biểu diễn một cây nhị phân. Em hãy cho biết thứ tự duyệt các nút của cây này theo phép duyệt trước (gốc-trái-phải).

Lời giải:

Thứ tứ duyệt các nút là: A, B, D, H, I, E, J, C, F, G.

Câu hỏi 2 trang 29 Chuyên đề Tin học 12: Với mảng dữ liệu ở Câu 1, thứ tự duyệt các phần tử sẽ như thế nào nếu thực hiện thuật toán duyệt sau?

Lời giải:

Thứ tứ duyệt các nút là: H, I, D, J, E, B, F, G, C, A

Luyện tập 1 trang 29 Chuyên đề Tin học 12: Cây nào là cây hoàn hảo? Cây nào là cây hoàn chỉnh? Cây nào không là hoàn hảo và hoàn chỉnh?

Cây nào là cây hoàn hảo? Cây nào là cây hoàn chỉnh? Cây nào không là hoàn hảo

Lời giải:

Cây hoàn hảo là: c

Cây hoàn chỉnh là: b

Cây không là hoàn hảo và hoàn chỉnh: a

Luyện tập 2 trang 29 Chuyên đề Tin học 12: Cây nhị phân gọi là đầy đủ nếu mỗi nút của nó hoặc là nút lá hoặc có đúng hai nút con. Khẳng định "Cây nhị phân đầy đủ sẽ luôn là hoàn chỉnh hoặc hoàn hảo" là đúng hay sai?

Lời giải:

Khẳng định "Cây nhị phân đầy đủ sẽ luôn là hoàn chỉnh hoặc hoàn hảo" là sai.

Ví dụ về một cây nhị phân đầy đủ không hoàn chỉnh và không hoàn hảo:

Cây nhị phân gọi là đầy đủ nếu mỗi nút của nó hoặc là nút lá

Vận dụng 1 trang 29 Chuyên đề Tin học 12: Cho mảng một chiều A biểu diễn cây nhị phân hoàn chỉnh T. Viết hàm 1eve1(k) trả về mức của nút tương ứng với phần tử A[k] của cây T.

Lời giải:

Viết hàm 1eve1(k) trả về mức của nút tương ứng với phần tử A[k] của cây T như sau:

function level(k) {

let level = 0;

while (k > 0) {

level++;

k = Math.floor((k - 1) / 2);

}

return level;

}

Vận dụng 2 trang 29 Chuyên đề Tin học 12: Cho cây nhị phân T được biểu diễn bởi mảng một chiều A. Viết các hàm duyệt trước, duyệt giữa và duyệt sau trên cây T.

Lời giải:

Viết các hàm duyệt trước, duyệt giữa và duyệt sau trên cây T như sau:

function preorderTraversal(A, index) {

if (index < A.length) {

console.log(A[index]); // In ra giá trị của nút hiện tại

preorderTraversal(A, 2 * index + 1); // Duyệt nút con trái

preorderTraversal(A, 2 * index + 2); // Duyệt nút con phải

}

}

function inorderTraversal(A, index) {

if (index < A.length) {

inorderTraversal(A, 2 * index + 1); // Duyệt nút con trái

console.log(A[index]); // In ra giá trị của nút hiện tại

inorderTraversal(A, 2 * index + 2); // Duyệt nút con phải

}

}

function postorderTraversal(A, index) {

if (index < A.length) {

postorderTraversal(A, 2 * index + 1); // Duyệt nút con trái

postorderTraversal(A, 2 * index + 2); // Duyệt nút con phải

console.log(A[index]); // In ra giá trị của nút hiện tại

}

}

1 162 17/07/2024


Xem thêm các chương trình khác: