Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 97 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
97
Dung lượng
838,5 KB
Nội dung
Chương 3: CÂY Nguyễn Văn Linh Khoa Công nghệ Thông tin & Truyền thơng nvlinh@ctu.edu.vn NỘI DUNG • CÁC THUẬT NGỮ CƠ BẢN • CÁC PHÉP TỐN • CÀI ĐẶT CÂY • CÂY NHỊ PHÂN • CÂY TÌM KIẾM NHỊ PHÂN Nguyễn Văn Linh – Khoa CNTT CÁC THUẬT NGỮ CƠ BẢN (1) • Định nghĩa – Cây (tree): tập hợp hữu hạn phần tử gọi nút (nodes) tập hợp hữu hạn cạnh nối cặp nút lại với mà không tạo thành chu trình – Nút gốc quan hệ cha - Nguyễn Văn Linh – Khoa CNTT A B D C E F CÁC THUẬT NGỮ CƠ BẢN (2) • Ta định nghĩa cách đệ qui: – Một nút đơn độc cây, nút nút gốc – Nút n nút đơn độc k riêng lẻ T1, T2, Tk có nút gốc n1, n2, nk Khi ta có cách cho n cha nút n1, n2, … nk nuït gäúc n n1 n1 Cáy Nguyễn Văn Linh – Khoa CNTT T1 nk T2 Tk CÁC THUẬT NGỮ CƠ BẢN (3) • Ví dụ Nguyễn Văn Linh – Khoa CNTT CÁC THUẬT NGỮ CƠ BẢN (4) • Nút cha con: nút A cha nút B nút A mức i nút B mức i+1, đồng thời A B có cạnh nối – VD: Ở trên, nút B cha G H Nút I D • Bậc nút số nút đó, bậc nút =0 – VD: A có bậc 5, C có bậc 0, O có bậc • Bậc bậc lớn nút – VD: có bậc • Cây n-phân có bậc n – VD: Bậc hay ngũ phân Nguyễn Văn Linh – Khoa CNTT CÁC THUẬT NGỮ CƠ BẢN (5) • Nút gốc (root ) nút khơng có cha – VD: nút gốc A • Nút (leaf) nút khơng có – VD: nút C, G, H, J, K, M, N, P, Q • Nút trung gian (interior node): nút có bậc khác nút gốc – VD: nút B, D, E, F, I, L, O • Nút tiền bối (descendant) & nút hậu duệ (ancestor): Nếu có đường từ nút a đến nút b nút a tiền bối b, b hậu duệ a – VD: D tiền bối Q, cịn Q hậu duệ D • Cây nút với tất hậu duệ Nguyễn Văn Linh – Khoa CNTT CÁC THUẬT NGỮ CƠ BẢN (6) • Đường chuỗi nút n1, n2, , nk cho ni nút cha nút ni+1 (i=1 k-1) – VD: có đường A, D, I, O, Q • Độ dài đường số nút đường trừ – VD: độ dài đường A,D,I,O,Q = 5-1=4 • Chiều cao nút độ dài đường từ nút đến nút xa – VD: nút B có chiều cao 1, nút D có chiều cao • Chiều cao chiều cao nút gốc – VD: chiều cao Nguyễn Văn Linh – Khoa CNTT CÁC THUẬT NGỮ CƠ BẢN (7) • Độ sâu nút độ dài đường từ nút gốc đến nút đó, hay cịn gọi mức (level) nút – VD: I có độ sâu 2, E có độ sâu M, N, O, P có mức • Nhãn nút tên mà giá trị lưu trữ nút • Rừng tập hợp nhiều D P A M C B H Nguyễn Văn Linh – Khoa CNTT G CÁC THUẬT NGỮ CƠ BẢN (8) • Cây có thứ tự – Nếu ta phân biệt thứ tự nút ta gọi có thứ tự Ngược lại, gọi khơng có thứ tự – Trong có thứ tự, thứ tự qui ước từ trái sang phải A B Nguyễn Văn Linh – Khoa CNTT A C C B CÀI ĐẶT CÂY BST void Delete_Node(Key_Type X, BST &Root) { if (Root!=NULL) if(X < Root->Key) Delete_Node(X, Root->Left) else if(X > Root->Key) Delete_Node(X, Root->Right) else if(Root->Left==NULL)&&(Root->Right==NULL) Root=NULL; // Trường hợp else if(Root->Left == NULL) Root = Root->Right else if(Root->Right==NULL) Root = Root->Left // Trường hợp else Root->Key=Delete_Max(Root->Left); // Trường hợp 3: thay nhãn nhãn lớn bên trái xóa nút có nhãn lớn } Nguyễn Văn Linh – Khoa CNTT CÀI ĐẶT CÂY BST Key_Type Delete_Max (BST &Root ){ Key_Type k; if (Root->Right == NULL){ k=Root->Key; Root = Root->Left; return k; } else Delete_Max(Root->Right); } Nguyễn Văn Linh – Khoa CNTT KIẾN THỨC BỔ SUNG (1) • Thời gian tìm kiếm giá trị TKNP có N nút là: – O(logN) “cân bằng” (balanced) – O(N) “không cân bằng” (unbalanced) Nguyễn Văn Linh – Khoa CNTT KIẾN THỨC BỔ SUNG (2) • Ví dụ TKNP phân “khơng cân bằng” Nguyễn Văn Linh – Khoa CNTT CÂY CÂN BẰNG AVL • Cây cân (AVL) tìm kiếm nhị phân mà nút chiều cao hai sai khác không 23 76 16 37 35 27 85 50 40 Nguyễn Văn Linh – Khoa CNTT 50 72 76 35 37 23 16 27 40 72 85 CÂY NHỊ PHÂN ĐẦY ĐỦ (1) (full binary tree) • Một nhị phân “cây nhị phân đầy đủ” – Mỗi nút khơng phải có xác nút – Tất nút có chiều cao Nguyễn Văn Linh – Khoa CNTT CÂY NHỊ PHÂN ĐẦY ĐỦ (2) Nguyễn Văn Linh – Khoa CNTT CÂY NHỊ PHÂN ĐẦY ĐỦ (3) • Câu hỏi nhị phân đầy đủ: – Một nhị phân đầy đủ chiều cao h có nút lá? – Một nhị phân đầy đủ chiều cao h có tất nút? Nguyễn Văn Linh – Khoa CNTT CÂY NHỊ PHÂN HOÀN CHỈNH (1) (complete binary tree) • Một nhị phân hồn chỉnh (về chiều cao) thỏa mãn điều kiện sau: – Mức đến h-1 trình bày nhị phân đầy đủ chiều cao h-1 – Một nhiều nút mức h-1 có 0, nút – Nếu j, k nút mức h-1, j có nhiều nút k j bên trái k Nguyễn Văn Linh – Khoa CNTT CÂY NHỊ PHÂN HOÀN CHỈNH (2) • Ví dụ AA BB CC DD HH EE II JJ FF KK Figure 13.8 A complete binary tree Nguyễn Văn Linh – Khoa CNTT G G CÂY NHỊ PHÂN HỒN CHỈNH (3) • Được cho tập hợp N nút, nhị phân hoàn chỉnh nút cung cấp số nút nhiều - với chiều cao trung bình nút nhỏ • Cây hồn chỉnh n nút phải chứa nút có chiều cao log n Nguyễn Văn Linh – Khoa CNTT CÂY NHỊ PHÂN CÂN BẰNG VỀ CHIỀU CAO (Height-balanced Binary Tree ) • Một nhị phân cân chiều cao nhị phân sau: – Chiều cao trái phải nút khác không đơn vị – Chú ý: nhị phân hoàn chỉnh cân chiều cao Nguyễn Văn Linh – Khoa CNTT CÂY CÂN BẰNG VỀ CHIỀU CAO – VÍ DỤ N M N- MLà nhị phân khác Nguyễn Văn Linh – Khoa CNTT DUYỆT CÂY NHỊ... Tree; Nguyễn Văn Linh – Khoa CNTT Khởi tạo rỗng void Make_Null_Tree (Tree &T){ T.Max_Node=0; } Nguyễn Văn Linh – Khoa CNTT Kiểm tra rỗng int Empty_Tree(Tree T) { return T.Max_Node == 0; } Nguyễn Văn. .. Post_Order(Root(T),T); getch(); } Nguyễn Văn Linh – Khoa CNTT CÀI ĐẶT CÂY BẰNG DS CÁC NÚT CON (1) • Minh họa F Nguyễn Văn Linh – Khoa CNTT B C A D G H I J E CÀI ĐẶT CÂY BẰNG DS CÁC NÚT CON (2) •