SLIDE BÀI GIẢNG MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - P3 CẤU TRÚC CÂY Đây là những silde bài giảng rất hay và dễ hiểu cho những bạn muốn nghiên cứu môn Cấu trúc dữ liệu và giải thuật. Bộ silde do tập thể giáo viên khoa CNTT- Đại học KHTN TPHCM biên soạn.
Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Cấu trúc dữ liệu và giải thuật - HCMUS 2013 2 Khái niệm Phép duyệt cây và Biểu diễn cây Cây nhị phân và Cây nhị phân tìm kiếm Cây AVL Cây AA Cấu trúc dữ liệu và giải thuật - HCMUS 2013 3 Cấu trúc dữ liệu và giải thuật - HCMUS 2013 4 Tree Search tree Binary search tree Balanced tree AVL tree AA tree Red-Black tree … Cấu trúc dữ liệu và giải thuật - HCMUS 2013 5 a b d i j o p k q e f c g l m h n Cấu trúc dữ liệu và giải thuật - HCMUS 2013 6 Sơ đồ tổ chức Cây thư mục Cấu trúc dữ liệu và giải thuật - HCMUS 2013 7 Cây (cây có gốc) được xác định đệ quy như sau: 1. Tập hợp gồm 1 đỉnh là một cây. Cây này có gốc là đỉnh duy nhất của nó. 2. Gọi T 1, T 2, … T k (k ≥ 1) là các cây không cắt nhau có gốc tương ứng r 1, r 2, … r k . Giả sử r là một đỉnh mới không thuộc các cây T i . Khi đó, tập hợp T gồm đỉnh r và các cây T i tạo thành một cây mới với gốc r. Các cây T 1, T 2, … T k được gọi là cây con của gốc r. Cấu trúc dữ liệu và giải thuật - HCMUS 2013 8 r 1 T 1 r 2 T 2 r k T k Nút gốc Cây con Cấu trúc dữ liệu và giải thuật - HCMUS 2013 9 Đỉnh (nút): node Gốc: root Node lá: leaf Node trong: inner node/internal node Node cha: parent Node con: child Đường đi: path Cấu trúc dữ liệu và giải thuật - HCMUS 2013 10 r 1 T 1 r 2 T 2 r k T k Nút gốc Cây con Nút lá k 1 k 2 k 5 k 4 k 3 k 6 Đường đi [...]... giải thuật - HCMUS 2013 31 4 2 10 9 6 5 7 Cấu trúc dữ liệu và giải thuật - HCMUS 2013 23 20 32 Đặc điểm: Có thứ tự Không có phần tử trùng Dễ dàng tạo dữ liệu sắp xếp, và tìm kiếm Cấu trúc dữ liệu và giải thuật - HCMUS 2013 Cấu trúc dữ liệu và giải thuật - HCMUS 2013 34 Thêm phần tử (khóa) Tìm kiếm phần tử (khóa) Xóa phần tử (khóa) Sắp xếp Duyệt cây Quay cây Cấu trúc dữ liệu và giải. .. 8 b c 11 d e i Cấu trúc dữ liệu và giải thuật - HCMUS 2013 f j g k h 21 A Root B D C E I F J Cấu trúc dữ liệu và giải thuật - HCMUS 2013 G K H 22 Info Eldest Child Next Sibling 1 a 2 0 2 b 4 3 3 c 6 0 4 d 0 5 5 e 9 0 6 f 0 7 7 g 11 8 8 h 0 0 9 i 0 10 10 j 0 0 11 k 0 0 b d c e i Cấu trúc dữ liệu và giải thuật - HCMUS 2013 f j g k h 23 A Root B D C E I F J Cấu trúc dữ liệu và giải thuật - HCMUS 2013 G... g 3 8 h 3 9 i 5 10 j 5 11 k 7 b d c e i Cấu trúc dữ liệu và giải thuật - HCMUS 2013 f j g k h 25 Binary tree Cấu trúc dữ liệu và giải thuật - HCMUS 2013 26 Là cây mà mỗi đỉnh có bậc tối đa bằng 2 Các cây con được gọi là cây con trái và cây con phải Có toàn bộ các thao tác cơ bản của cây b d c e h Cấu trúc dữ liệu và giải thuật - HCMUS 2013 f i g j 27 Cây nhị phân hoàn chỉnh (complete binary... con Nút lá Cấu trúc dữ liệu và giải thuật - HCMUS 2013 Đường đi k6 13 Cấu trúc dữ liệu và giải thuật - HCMUS 2013 14 Đảm bảo đến mỗi node trên cây chính xác một lần một cách có hệ thống Nhiều thao tác xử lý trên cây cần phải sử dụng đến phép duyệt cây Các phép cơ bản: Duyệt trước (Pre-order) Duyệt giữa (In-order) Duyệt sau (Post-order) Cấu trúc dữ liệu và giải thuật - HCMUS 2013 15 Parent(a)?... đến mức h-1 Các node ở mức h sẽ được lấp từ trái sang phải Cây Cây nhị phân đầy đủ (full binary tree) nhị phân có chiều cao là h thì tất cả các node nằm ở mức từ 1 đến h-1 đều có 2 node con Cây Cấu trúc dữ liệu và giải thuật - HCMUS 2013 28 a b d h e i b c f g d c e f j Cây nhị phân hoàn chỉnh Cấu trúc dữ liệu và giải thuật - HCMUS 2013 Cây nhị phân đầy đủ g 29 Cây tổ chức thi đấu Cây biểu... (B != ) { Preorder(B); B = NextSibling(B); } } } Cấu trúc dữ liệu và giải thuật - HCMUS 2013 18 In-Order void Inorder(NODE A) { NODE B; B = EldestChild(A); if (B != ) { Inorder(B); B = NextSibling(B); } Visit(A); while (B != ) { Inorder(B); B = NextSibling(B); } } Cấu trúc dữ liệu và giải thuật - HCMUS 2013 19 Cấu trúc dữ liệu và giải thuật - HCMUS 2013 20 info child id next 1 a 2 3 2 b 4 5 3... trữ và tìm kiếm thông tin * 4 + - 3 1 4 sin 30 Cây biểu thức: 4 * (3 – 4) + (1 + sin(30)) Cấu trúc dữ liệu và giải thuật - HCMUS 2013 30 1 2 3 Cây nhị phân tìm kiếm là cây nhị phân thỏa mãn các điều kiện sau: Khóa của các đỉnh thuộc cây con trái nhỏ hơn khóa gốc Khóa của gốc nhỏ hơn khóa các đỉnh thuộc cây con phải Cây con trái và cây con phải của gốc cũng là cây nhị phân tìm kiếm Cấu trúc dữ liệu và. .. của cây: bậc lớn nhất trong số các node của cây Mức (Độ sâu): depth/level Mức (độ sâu) của node: Chiều dài của đường đi từ node gốc đến node đó cộng thêm 1 Chiều cao: height Chiều cao cây: Cây rỗng: 0 Cây khác rỗng: Mức lớn nhất giữa các node của cây Cấu trúc dữ liệu và giải thuật - HCMUS 2013 12 Bậc = k Nút gốc Bậc = 2 Độ cao = 4 r1 r2 rk k1 T1 T2 k2 Tk k3 k4 k5 Cây con Nút lá Cấu trúc dữ. .. • EldestChild(x) Tìm đỉnh kề phải d e • NextSibling(x) f g NextSibling(g) = h i Cấu trúc dữ liệu và giải thuật - HCMUS 2013 NextSibling(h)? h 16 Duyệt theo chiều sâu Duyệt trước • abdeijcfgkh Duyệt giữa b c • dbiejafckgh d e f g Duyệt sau • dijebfkghca i Cấu trúc dữ liệu và giải thuật - HCMUS 2013 j k h 17 Pre-order Post-order void Preorder(NODE A) void Postorder(NODE A) { NODE B; { NODE B; Visit(A);... liệu và giải thuật - HCMUS 2013 35 Bước 1: Bắt đầu từ gốc Bước 2: So sánh dữ liệu (khóa) cần thêm với dữ liệu (khóa) của node hiện hành Nếu bằng nhau => Đã tồn tại Kết thúc Nếu nhỏ hơn => Đi qua nhánh trái, Tiếp bước 2 Nếu lớn hơn => Đi qua nhánh phải, Tiếp bước 2 Bước 3: Không thể đi tiếp nữa => Tạo node mới với dữ liệu (khóa) cần thêm Kết thúc Cấu trúc dữ liệu và giải thuật - HCMUS 2013 . trúc dữ liệu và giải thuật - HCMUS 20 13 16 Duyệt trước • a b d e i j c f g k h Duyệt giữa • d b i e j a f c k g h Duyệt sau • d i j e b f k g h c a Duyệt theo chiều sâu b c h f d i j. 20 13 12 r 1 T 1 r 2 T 2 r k T k Nút gốc Cây con Nút lá Độ cao = 4 Bậc = k k 1 k 2 k 5 k 4 k 3 k 6 Bậc = 2 Đường đi Cấu trúc dữ liệu và giải thuật - HCMUS 20 13 13. giải thuật - HCMUS 20 13 2 Khái niệm Phép duyệt cây và Biểu diễn cây Cây nhị phân và Cây nhị phân tìm kiếm Cây AVL Cây AA Cấu trúc dữ liệu và giải thuật - HCMUS 20 13 3 Cấu trúc dữ liệu