Cây và các ứng dụng của cây, Một số dạng cây thường dùng: cây nhị phân, cây nhị phân tìm kiếm, cây cân bằng (AVL), Các thuật toán trên cây, Đánh giá thuật toán
1Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 1! Cây và các ứng dụng của cây! Một số dạng cây thường dùng: cây nhị phân, cây nhị phân tìm kiếm, cây cân bằng (AVL)! Các thuật toán trên cây! Đánh giá thuật toánCấu trúc cây -TreesSpring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 2Nội dung trình bày! Các khái niệm và thuật ngữ cơ bản! Tổng quan về cây nhị phân (Binary Tree)! Cây nhị phân tìm kiếm (BST –Binary Search Tree)! Cây nhị phân tìm kiếm cân bằng (AVL Tree) 2Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 3Các khái niệm và thuật ngữ cơ bản! Các ví dụ! Định nghĩa cấu trúc cây! Các thuật ngữ liên quanSpring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 4Các khái niệm và thuật ngữ cơ bảnCác ví dụ! Ví dụ 1: bài toán đưa thư! Trên thế giới hiện có 6 tỉ người! Tuấn, khoa CNTT, ĐH KHTN, Tp.HCM, Việt nam! Cách tìm ra “Tuấn” nhanh nhất ?! Sử dụng mảng (array) ?! Sử dụng danh sách liên kết (linked list) ? 3Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 5Các khái niệm và thuật ngữ cơ bảnCác ví dụChina . .Korea VietnamTrái đấtTp.HCM Hà nộiĐH.KHTN ĐH.BKKhoa CNTT Khoa Toán“Tuấn” . .Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 6Các khái niệm và thuật ngữ cơ bảnCác ví dụ! Ví dụ 2: cây biểu thức (a-b)*(c/d)*0/abcd 4Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 7Các khái niệm và thuật ngữ cơ bảnCác ví dụ! Cây là 1 cấu trúc dữ liệu quan trọng để biểu diễn tính “kế thừa”! Các cây mô tả tính kế thừa:! Cây gia phả (trong các dòng họ)! Cây phân cấp các loài (trong sinh vật)! …Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 8Các khái niệm và thuật ngữ cơ bảnĐịnh nghĩa cấu trúc cây! Một cây <T> (Tree) là:! Một tập các phần tử, gọi là các nút (Node) p1,p2,…,pN! Nếu N=0, cây <T> gọi là cây rỗng (NULL)! Nếu N>0:! Tồn tại duy nhất 1 nút pkgọi là gốc của cây! Các nút còn lại được chia thành m tập không giao nhau: T1, T2, …, Tm! Mỗi <Ti> là 1 cây con của cây <T> 5Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 9Các khái niệm và thuật ngữ cơ bảnĐịnh nghĩa cấu trúc câyabkigchefdjCây <T> rỗng(NULL)Nút gốcCây <T>Cây con <T1>Cây con <T2>Cây con <T3>Cây con <T4>Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 10Các khái niệm và thuật ngữ cơ bảnĐịnh nghĩa cấu trúc câyackdbi hjgefCây con <T1> Cây con <T2> Cây con <T3> Cây con <T4> Cây <T> 6Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 11Các khái niệm và thuật ngữ cơ bảnĐịnh nghĩa cấu trúc câyackdbi hjgefCây con <T1> Cây con <T2> Cây con <T3> Cây con <T4> Cây <T> Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 12Các khái niệm và thuật ngữ cơ bảnĐịnh nghĩa cấu trúc cây! Các tính chất của cây:! Nút gốc không có nút cha! Mỗi nút khác chỉ có 1 nút cha! Mỗi nút có thể có nhiều nút con! Không có chu trình 7Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 13Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quan! Nút (Node): là 1 phần tử trong cây. Mỗi nút có thể chứa 1 dữ liệu bất kỳ! Nhánh (Branch): là đoạn nối giữa 2 nút! Nút cha (Parent node)! Nút con (Child node)! Nút anh em (sibling nodes): là những nút có cùng nút cha! Bậc của 1 nút pi: là số nút con của pi! Bậc (a) = 4; Bậc (j) = 3; Bậc (g) = 2;! Bậc (k) = 1; Bậc (c) = 0Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 14Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quan! Nút gốc (Root node): nút không có nút cha! Nút lá (Leaf node, haynút ngoài –External node): nút có bậc = 0 (không có nút con)! Nút nội (Internal node): là nút có nút cha và có nút con! Cây con (Subtree)! Trắc nghiệm: có bao nhiêu cây con trong cây <T> ? 8Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 15Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quan! Bậc của cây: là bậc lớn nhất của các nút trong cây! Bậc (<T>) = max {bậc (pi) / pi∈ <T>}! Bậc của cây <T> ?! Đường đi (Path) giữa nút piđến nút pj: là dảy các nút liên tiếp từ pi đến pj sao cho giữa hai nút kề nhau đều có nhánh! Path(a, d) ?Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 16Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quan! Mức (Level):! Mức (p) = 0 nếu p = root! Mức (p) = 1 + Mức (Cha (p)) nếu p!=root! Chiều cao của cây (Height - hT): đường đi dài nhất từ nút gốc đến nút lá! hT= max {Path(root, pi) / pilà nút lá ∈ <T>}! hT? 9Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 17Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quanSpring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 18Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quan! Cây hoàn chỉnh (Complete tree) với h mức: là 1 cây thoả các điều kiện! Những nút từ mức 0 đến mức h-1 đều đầy đủ! Những nút ở mức h được thêm vào cây từ trái sang phải 10Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 19Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quanCây hoàn chỉnh ?Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 20Các khái niệm và thuật ngữ cơ bảnCác thuật ngữ liên quanCây hoàn chỉnh ? [...]... Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 31 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng mảng * 0 / a b c d -1 -1 d6 -1 -1 c5 -1 -1 b4 -1 -1 a3 65/2 4 3-1 21*0 Con phảiCon tráiNút# Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 32 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng mảng // Định nghĩa các cấu trúc dữ liệu typedef... Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 47 Cây nhị phân tìm kiếm Vídụ Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 48 Cây nhị phân tìm kiếm Mơt cấu trúc dữ liệu ! Cách lưu trữ cây BST giống như cây nhị phân ! Xem lại phần “Tổng quan về cây nhị phân -Cách thức lưu trữ cây 26 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT... Tp.HCM 11 Các khái niệm và thuật ngữ cơ bản Định nghĩa cấu trúc cây a c k dbi h j g ef Cây con <T 1 > Cây con <T 2 > Cây con <T 3 > Cây con <T 4 > Cây <T> Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 12 Các khái niệm và thuật ngữ cơ bản Định nghĩa cấu trúc cây ! Các tính chất của cây: ! Nút gốc khơng có nút cha ! Mỗi nút khác chỉ... Tree Môt cấu trúc dữ liệu // Định nghĩa các cấu trúc dữ liệu … (tiếp theo) typedef struct AVL_TREE { intCount; // Số nút trong cây AVLT_NODE*pRoot; // con trỏ đến nút gốc };// Cấu trúc cây AVL 42 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 83 AVL Tree Môt cấu trúc dữ liệu 10 20 30 15 40 26 27 25 1 0 -1 0 1 0 0 0 Hệ số cân bằng của các nút trong cây AVL Spring... & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 81 AVL Tree Vídụ Cây AVL ? Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 82 AVL Tree Môt cấu trúc dữ liệu ! Thêm vào mỗi nút trong cây 1 field Bal, diễn tả trạng thái của nút đó: ! Bal = -1 : nút lệch trái (cây con trái cao hơn cây con phải) ! Bal = 0: nút cân bằng (cây con trái cao bằng cây con phải) !... & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 85 AVL Tree Môt cấu trúc dữ liệu // Định nghĩa các cấu trúc dữ liệu typedef struct tagAVLT_NODE { intData; intBal; // Hệ số cân bằng (-1 ,0,1) tagBT_NODE*pLeft; // con trỏ đến nút con trái tagBT_NODE*pRight; // con trỏ đến nút con phải } AVLT_NODE;// Cấu trúc nút của cây AVL Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT... Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 49 Cây nhị phân tìm kiếm Xây dựng các thao tác cơ bản trên cây ! Các thao tác trên cây BST: ! Tạo lập cây rỗng ! Kiểm tra cây rỗng ! Tìm kiếm 1 phần tử ! Thêm 1 phần tử ! Xóa 1 phần tử Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 50 Cây nhị phân tìm kiếm Xây dựng các thao tác cơ bản trên cây ! Tạo lập cây rỗng: void... niệm và thuật ngữ cơ bản Các ví dụ ! Cây là 1 cấu trúc dữ liệu quan trọng để biểu diễn tính “kế thừa” ! Các cây mơ tả tính kế thừa: ! Cây gia phả (trong các dịng họ) ! Cây phân cấp các lồi (trong sinh vật) ! … Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 8 Các khái niệm và thuật ngữ cơ bản Định nghĩa cấu trúc cây ! Một cây <T> (Tree) là: ! Một tập các... N=0, cây <T> gọi là cây rỗng (NULL) ! Nếu N>0: ! Tồn tại duy nhất 1 nút p k gọi là gốc của cây ! Các nút còn lại được chia thành m tập không giao nhau: T 1 , T 2 , …, T m ! Mỗi <T i > là 1 cây con của cây <T> 1 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 1 ! Cây và các ứng dụng của cây ! Một số dạng cây thường dùng: cây nhị phân, cây. .. cây nhị phân, cây nhị phân tìm kiếm, cây cân bằng (AVL) ! Các thuật toán trên cây ! Đánh giá thuật toán Cấu trúc cây -Trees Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 2 Nội dung trình bày ! Các khái niệm và thuật ngữ cơ bản ! Tổng quan về cây nhị phân (Binary Tree) ! Cây nhị phân tìm kiếm (BST –Binary Search Tree) ! Cây nhị phân tìm kiếm cân bằng (AVL Tree) . sử dụng mảng*0/abcd- 1-1 d 6-1 -1 c 5-1 -1 b 4-1 -1 a365/24 3-1 21*0Con phảiCon tráiNút#Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN. cơ bảnĐịnh nghĩa cấu trúc câyabkigchefdjCây <T> rỗng(NULL)Nút gốcCây <T> ;Cây con <T1> ;Cây con <T2> ;Cây con <T3> ;Cây con <T4>Spring