Bài giảng Cấu trúc dữ liệu và giải thuật: Cây và cây nhị phân cung cấp cho người học các kiến thức: Cây dữ liệu, cây nhị phân. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
Cây nhị phân (Trees and Binary Trees) Nguyễn Mạnh Hiển hiennm@tlu.edu.vn Nội dung Cây Cây nhị phân Cây Định nghĩa Cây tập nút: • Nếu tập nút rỗng, rỗng • Nếu tập nút khơng rỗng: − Có nút root gọi nút gốc − Có k T1, T2, …, Tk (k 0) cho nút gốc nối với nút root cạnh − root gọi nút cha, gốc T1, T2, …, Tk gọi nút root Ví dụ 1: Cấu trúc tổ chức cơng ty Ví dụ 2: Cấu trúc hệ thống file Các khái niệm (1) Xét có n nút: • Có nút gốc; • Có n – cạnh nút (trừ nút gốc) có cạnh liên kết với nút cha Các khái niệm (2) • Nút lá: Nút khơng có (B, C, H…) • Nút anh em: Các nút cha (K, L, M cha F) • Nút ơng (E) nút cháu (P, Q) Các khái niệm (3) • Đường từ nút n1 đến nút nk dãy nút n1, n2, …, nk ni cha ni+1 (1 i < k) • Chiều dài đường số cạnh đường − Đường từ nút tới có chiều dài 10 Các khái niệm (4) • Chiều sâu nút ni chiều dài đường từ nút gốc đến nút ni − Nút gốc có chiều sâu − Chiều sâu chiều sâu nút sâu • Chiều cao nút ni chiều dài đường dài từ nút ni đến nút − Nút có chiều cao − Chiều cao chiều cao nút gốc • Chiều cao = chiều sâu 26 Cây biểu thức Cây biểu thức nhị phân, đó: • Nút lưu trữ tốn tử; • Nút lưu trữ tốn hạng 27 Duyệt biểu thức theo thứ tự • Xuất phát từ nút gốc • Trình tự duyệt: duyệt trái theo thứ tự thăm nút xét duyệt phải theo thứ tự • Đầu ra: biểu thức trung tố 28 Duyệt biểu thức theo thứ tự sau • Xuất phát từ nút gốc • Trình tự duyệt: duyệt trái theo thứ tự sau duyệt phải theo thứ tự sau thăm nút xét • Đầu ra: biểu thức hậu tố 29 Duyệt biểu thức theo thứ tự trước • Xuất phát từ nút gốc • Trình tự: thăm nút xét duyệt trái theo thứ tự trước duyệt phải theo thứ tự trước • Đầu ra: biểu thức tiền tố 30 Xây dựng biểu thức • Xét trường hợp biểu thức hậu tố (Ví dụ: a b + c d e + * *) • Cách xây dựng (dùng ngăn xếp): − Đọc toán hạng/toán tử từ trái sang phải − Gặp toán hạng: (1) Tạo nút chứa toán hạng; (2) Đặt trỏ tới nút vào ngăn xếp − Gặp tốn tử: (1) Lấy hai trỏ, trỏ tới hai T1 T2, khỏi ngăn xếp; (2) Tạo nút chứa toán tử trỏ sang trái phải tới T1 T2; (3) Đặt trỏ tới nút toán tử vào ngăn xếp 31 Xây dựng cây: a b + c d e + * * • Đọc a, b 32 Xây dựng cây: a b + c d e + * * • Đọc + 33 Xây dựng cây: a b + c d e + * * • Đọc c, d, e 34 Xây dựng cây: a b + c d e + * * • Đọc + 35 Xây dựng cây: a b + c d e + * * • Đọc * 36 Xây dựng cây: a b + c d e + * * • Đọc * 37 Bài tập Chỉ nút gốc nút Tính chiều sâu chiều cao nút C, E H Tính chiều sâu chiều cao 38 Bài tập Xét nhị phân có n nút Chứng minh có n + liên kết rỗng (tức trỏ NULL) Xét nhị phân có chiều cao h Chứng minh số nút không vượt 2h+1 – Gợi ý: Dùng quy nạp toán học 39 Bài tập Viết biểu thức trung tố, tiền tố hậu tố tương ứng với biểu thức bên 40 Bài tập Viết hàm C++ có tham số trỏ tới gốc nhị phân T để: (a) đếm số nút T (b) đếm số nút T (c) đếm số nút có đủ T Gợi ý: Dùng đệ quy Viết hàm C++ duyệt nhị phân theo thứ tự trước, sau Gợi ý: Dùng đệ quy Nêu cách thực phép duyệt nhị phân theo thứ tự mức: thăm nút gốc trước tiên, đến thăm nút độ sâu 1, đến thăm nút độ sâu 2, v.v… Gợi ý: Dùng hàng đợi ... theo thứ tự sau root root (13) (14) (15) root 5 root (16) 23 Cây nhị phân 24 Định nghĩa nhị phân Cây nhị phân cây, nút có khơng q con, phân thành trái phải: • Con trái gốc trái nút xét • Con phải...2 Nội dung Cây Cây nhị phân Cây Định nghĩa Cây tập nút: • Nếu tập nút rỗng, rỗng • Nếu tập nút khơng rỗng: − Có nút root gọi... Đọc * 37 Bài tập Chỉ nút gốc nút Tính chiều sâu chiều cao nút C, E H Tính chiều sâu chiều cao 38 Bài tập Xét nhị phân có n nút Chứng minh có n + liên kết rỗng (tức trỏ NULL) Xét nhị phân có chiều