Kỹ Thuật - Công Nghệ - Kinh tế - Thương mại - Khoa Học - Science FIT-HCMUS 1 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 2011 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 FIT-HCMUS 2 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 3 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 4 Tree Search tree Binary search tree Balanced tree AVL tree AA tree Red-Black tree … FIT-HCMUS 3 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 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 2011 6 Sơ đồ tổ chức Cây thư mục FIT-HCMUS 4 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 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 T1, T2, … Tk (k ≥ 1) là các cây không cắt nhau có gốc tương ứng r1, r2, … rk. Giả sử r là một đỉnh mới không thuộc các cây Ti. Khi đó, tập hợp T gồm đỉnh r và các cây Ti tạo thành một cây mới với gốc r. Các cây T1, T2, … Tk đượ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 2011 8 r1 T1 r2 T2 rk Tk Nút gốc Cây con FIT-HCMUS 5 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 9 node: đỉnh root: gốc cây leaf: lá inner nodeinternal node: đỉnh trong parent: đỉnh cha child: đỉnh con path: đường đi Cấu trúc dữ liệu và giải thuật - HCMUS 2011 10 r1 T1 r2 T2 rk Tk Nút gốc Cây con Nút lá k1 k2 k5k4k3 k6 Đường đi FIT-HCMUS 6 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 11 degreeorder: bậc Bậc của node: Số con của node Bậc của cây: bậc lớn nhất trong số các con depthlevel: độ sâumức 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. height: chiều cao Chiều cao cây: Cây rỗng: ...
Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến 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 2011 ©FIT-HCMUS 1 3 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 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 2011 ©FIT-HCMUS 2 5 a b c d e f g h i j k l m n o p q Cấu trúc dữ liệu và giải thuật - HCMUS 2011 6 Sơ đồ tổ chức Cây thư mục Cấu trúc dữ liệu và giải thuật - HCMUS 2011 ©FIT-HCMUS 3 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 T1, T2, … Tk (k ≥ 1) là các cây không cắt nhau có gốc tương ứng r1, r2, … rk Giả sử r là một đỉnh mới không thuộc các cây Ti Khi đó, tập hợp T gồm đỉnh r và các cây Ti tạo thành một cây mới với gốc r Các cây T1, T2, … Tk đượ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 2011 8 Nút gốc r1 r2 rk T1 T2 Tk Cây con Cấu trúc dữ liệu và giải thuật - HCMUS 2011 ©FIT-HCMUS 4 9 node: đỉnh root: gốc cây leaf: lá inner node/internal node: đỉnh trong parent: đỉnh cha child: đỉnh con path: đường đi Cấu trúc dữ liệu và giải thuật - HCMUS 2011 10 Nút gốc r1 r2 rk T1 Cây con k1 k2 T2 Tk k3 k4 k5 Nút lá Cấu trúc dữ liệu và giải thuật - HCMUS 2011 Đường đi k6 ©FIT-HCMUS 5 11 degree/order: bậc Bậc của node: Số con của node Bậc của cây: bậc lớn nhất trong số các con depth/level: độ sâu/mức 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 height: chiều cao 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 2011 12 Nút gốc Độ cao = 4 Bậc = k Bậc = 2 r1 r2 rk T1 Cây con k1 k2 T2 Tk k3 k4 k5 Nút lá Cấu trúc dữ liệu và giải thuật - HCMUS 2011 Đường đi k6 ©FIT-HCMUS 6 13 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 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 2011 ©FIT-HCMUS 7 15 Parent(a)? Tìm cha một đỉnh Parent(b) = a Eldest- Child(c) = g • Parent(x) b c Tìm đỉnh con trái nhất d e f g h • EldestChild(x) NextSibling(g) = h Tìm đỉnh kề phải i • NextSibling(x) Cấu trúc dữ liệu và giải thuật - HCMUS 2011 NextSibling(h)? 16 Duyệt theo chiều sâu Duyệt trước b c • abdeijcfgkh d e f g h Duyệt giữa i j k • dbiejafckgh Duyệt sau • dijebfkghca Cấu trúc dữ liệu và giải thuật - HCMUS 2011 ©FIT-HCMUS 8 17 Pre-order Post-order void Preorder(NODE A) void Postorder(NODE A) { { NODE B; NODE B; Visit(A); B = EldestChild(A); B = EldestChild(A); while (B != ) { while (B != ) { Preorder(B); Postorder(B); B = NextSibling(B); B = NextSibling(B); } } Visit(A); } } Cấu trúc dữ liệu và giải thuật - HCMUS 2011 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 2011 ©FIT-HCMUS 9 19 Cấu trúc dữ liệu và giải thuật - HCMUS 2011 20 info child id next 1a 2 3 2b 4 5 3c 6 7 8 4d 5e 9 10 6f b c 7g 11 8h d e f g h 9i 10 j 11 k i j k Cấu trúc dữ liệu và giải thuật - HCMUS 2011 ©FIT-HCMUS 10