Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
1,96 MB
Nội dung
Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 1 Bài 21: CÂYTỔNGQUÁT Trong chương này chúng ta sẽ nghiên cứu mô hình dữ liệucây (tree). Cây là một cấu trúc phân cấp trên một tập hợp nào đó các đối tượng. Một ví dụ quen thuộc về cây, đó là cây thư mục hoặc mục lục của cuốn sách cũng là một cây. Cây được sử dụng rộng rãi trong rất nhiều vấn đề khác nhau. Chẳng hạn nó được áp dụng để tổ chức thông tin trong các hệ cơ sở d ữ liệu, để mô tả cấu trúc cú pháp của các chương trình nguồn khi xây dựng các chương trình dịch. Rất nhiều bài toán mà ta gặp trong các lĩnh vực khác nhau được quy về việc thực hiện các phép toán trên cây. Trong chương này chúng ta sẽ trình bày định nghĩa, các khái niệm cơ bản về cây. Chúng ta cũng sẽ xét các phương pháp cài đặt cây và thực hiện các phép toán cơ bản trên cây. Sau đó ta nghiên cứu kỹ một số dạng cây đặc biệt đó là cây nhị phân tìm kiếm và cây cân bằng. 21.1. Định nghĩa Định nghĩa 1: Một cây là tập hợp hữu hạn các nút trong đó có một nút đặc biệt gọi là gốc (root). Giữa các nút có một quan hệ phân cấp gọi là "quan hệ cha con". Định nghĩa 2: Cây được định nghĩa đệ qui như sau 1. Một nút là một cây và nút này cũng là gỗc của cây. 2. Giả sử T 1 , T 2 , …,T n (n ≥ 1) là các cây có gốc tương ứng r 1 , r 2 ,…, r n . Khi đó cây T với gốc r được hình thành bằng cách cho r trở thành nút cha của các nút r 1 , r 2 ,…, r n 21.2. Các khái niệm về cây Bậc của một nút: là số con của nút đó Bậc của một cây: là bậc lớn nhất của các nút có trên cây đó (số cây con tối đa của một nút thuộc cây). Cây có bậc n thì gọi là cây n - phân nút gốc: là nút có không có nút cha Nút lá: là nút có bậc bằng 0 Nút nhánh: là nút có bậc khác 0 và không phải là nút gốc Mức của một nút Mức (gốc (T 0 )) =1 Gọi T 1 , T 2 , ., T n là các cây con của T 0 . Khi đó Mức (T 1 ) = Mức (T 2 ) = . = Mức (T n ) = Mức (T 0 ) +1 Chiều cao của cây: là số mức lớn nhất có trên cây đó Đường đi: Dãy các đỉnh n 1 , n 2 , .,n k được gọi là đường đi nếu n i là cha của n i+1 (1 ≤ i ≤ k- 1 Độ dài của đường đi: là số nút trên đường đi -1 Cây được sắp : Trong một cây, nếu các cây con của mỗi đỉnh được sắp theo một thứ nhất định, thì cây được gọi là cây được sắp (cây có thứ tự). Chẳng hạn, hình minh hoạ hai cây được sắp khác nhau A B C A C B Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 2 Rừng: là tập hợp hữu hạn các cây phân biệt hình 5.2. Rừng gồm ba cây 21.3. Phép duyệt câytổngquát Trong khoa học máy tính, duyệt cây là việc lần lượt viếng thăm các đỉnh của cây theo một thứ tự nào đó. Các cây nói trong bài này là cây có gốc. Định nghĩa phép duyệt cây như sau: 1) Sự nhất quán về thứ tự các nút được thăm giữa phép duy ệt câytổngquát và phép duyệt cây nhị phân tương đương của nó 2) Sự nhất quán giữa định nghĩa phép định nghĩa phép duyệt câytổngquát với định nghĩa phép duyệt cây nhị phân. Vì cây nhị phân cũng có thể coi là câytổngquát và ta có thể áp dụng định nghĩa phép duyệt câytổngquát cho cây nhị phân. Ta có thể xây dựng được định nghĩa của phép duyệt câytổngquát T như sau Duyệt theo thứ tự trước a) nếu T rỗng thì không làm gì b) Nếu T khác rỗng thì Thăm gốc của T Duyệtcác cây con thứ nhất T 1 của gốc của cây T theo thứ tự trước Duyệt các cây con còn lại T 2 , T 3 , .,T n của gốc T theo thứ tự trước Duyệt theo thứ tự giữa a) Nếu T rỗng thì không làm gì b) Nếu T khác rỗng thì Duyệtcác cây con thứ nhất T 1 của gốc của cây T theo thứ tự giữa Thăm gốc của T Duyệt các cây con còn lại T 2 , T 3 , .,T n của gốc T theo thứ tự giữa Tuy nhiên người ta ít xem xét việc duyệt trung thứ tự của câytổngquát Duyệt theo thứ tự sau a) Nếu T rỗng thì không làm gì b) Nếu T khác rỗng thì Duyệtcác cây con thứ nhất T 1 của gốc của cây T theo thứ tự sau Duyệt các cây con còn lại T 2 , T 3 , .,T n của gốc T theo thứ tự sau Thăm gốc của T ví dụ với cây ở hình vẽ 5.17 Hình 5.1. Hai cây được sắp khác nhau A B C D E G O N M Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 3 Hình 5.17 Thì dãy tên các nút được thăm sẽ là Thứ tự trước: A B C E H I F J D g Thứ tự giữa : B A h E I C J F G D Thứ tự sau : B H I E J F C G D a Bây giờ ta dựng cây nhị phân tương đương với câytổngquát ở hình 5.17 Hình 5.18. Cây nhị phân tương đương Dãy các nút được thăm khi duyệt nó theo phép duyệt của cây nhị phân: Thứ tự trước: A B C E H I F J D G Thứ tự giữa: B H I E J F C G D A Thứ t ự sau: I H JF E G D C B A Duyệt theo mức Một phương pháp duyệt cây khác là duyệt theo mức. Bắt đầu duyệt từ gốc (đỉnh mức 0), rồi duyệt các con của gốc từ trái sang phải (các đỉnh mức 1), tiếp đến là các đỉnh mức 2, . 21.4. Cài đặt câytổngquát Có nhiều phương pháp biểu diễn cây. Cách thường dùng nhất là biểu diễn mỗi nút như một dữ liệu kiểu bản ghi, mỗi nút chứa các con trỏ t ới các con hoặc cha của nó, hoặc cả hai. Cây cũng có thể biểu diễn bằng các mảng cùng với quan hệ giữa các vị trí trong mảng. A D G C J B E F H I A B C E D F H I J G Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 4 Khi biểu diễn cấu trúc câytổng quát, vì mỗi nút có thể có nhiều con, số con có thể khác nhau, nên ta không dùng cho mỗi nút con một liên kết đến nút cha mà với mỗi nút vẫn chỉ dành hai liên kết, một liên kết (trường Child) trỏ đến nút con đầu bên trái của nó, một liên kết (trường Next)trỏ đến nút cùng cha kề bên phải nó. Nếu coi liên kết trường Child như liên kết Left, liên kết Next như liên kết Right ta có một cây nhị phân t ương đương với câytổng quát. Ví dụ • Câytổngquát A / | \ B C D / \ | E F G • Cây nhị phân tương đương A / B / \ E C \ \ F D / G • Lưu trữ của câytổngquát như sau Root=A A.Value="A",A.Child=B,A.Next=Null B.Value="B",B.Child=E,B.Next=C C.Value="C",C.Child=Null,C.Next=D D.Value="D",D.Child=G,D.Next=Null E.Value="E",E.Null,E.Next=F F.Value="F",F.Child=Null,F.Next=Null G.Value="G",D.Child=Null,G.Next=Null Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 5 Bài 22: CÂY NHỊ PHÂN 22.1. Định nghĩa, tính chất Định nghĩa: Cây nhị phân là cây mà mỗi nút có tối đa hai cây con. Đối với cây con của một nút người ta cũng phân biệt cây con trái và cây con phải. Như vậy cây nhị phân là cây có thứ tự. Hình 5.3. Một số cây nhị phân Tính chất: Đối với cây nhị phân cần chú ý tới một số tính chất sau i) Số lượng tối đa các nút có ở mức i trên cây nhị phân là 2 i -1 (i ≥ 1) ii) Số lượng nút tối đa trên một cây nhị phân có chiều cao h là 2 h -1(h ≥ 1 ) Chứng minh i) Sẽ được chứng minh bằng qui nạp Bước cơ sở: với i = 1, cây nhị phân có tối đa 1 = 2 0 nút.Vậy mệnh đề đúng với i = 1 Bước qui nạp: Giả sử kết quả đúng với mức i, nghĩa là ở mức này cây nhị phân có tối đa 2 i - 1 nút, ta chứng minh mệnh đề đúng với mức i + 1. Theo định nghĩa cây nhị phân thì tại mỗi nút có tối đa hai cây con nên mỗi nút ở mức i có tối đa hai con. Do đó theo giả thiết qui nạp ta suy ra tại mức i+ 1 ta có 2 i - 1 x 2 = 2 i nút. ii) Ta đã biết rằng chiều cao của cây là số mức lớn nhất có trên cây đó. Theo i) ta suy ra số nút tối đa có trên cây nhị phân với chiều cao h là : 2 0 + 2 1 + . + 2 h-1 = 2 h -1. Từ kết quả này có thể suy ra: Nếu cây nhị phân có n nút thì chiều cao của no là h = ⎡log 2 (n + 1)⎤ (Ta qui ước : ⎡x⎤ là số nguyên trên của x ⎣x⎦ là số nguyên dưới của x ) 22.2. Phép duyệt cây nhị phân Khi xét một cây nhị phân, mỗi đỉnh cùng với các đỉnh đứng sau nó là gốc của một cây con. Ta xét một đỉnh A là đỉnh trong của cây nhị phân. Theo thứ tự người ta xem xét thứ tự thăm đỉnh A so với việc thăm hai con của nó là thăm A trước rồi 2 con sau, thăm A xen giữa việc thăm hai con, thă m A sau thi thăm hai con: • A, con trái, con phải • Con trái, A, con phải • Con trái, con phải, A A B D C E A B D C E A B C D C E Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 6 Tất nhiên nếu không có con nào thì việc thăm con ấy không diễn ra. Còn nếu con L hoặc con R của A lại là gốc của một cây con, thì việc thăm thay bằng việc duyệt cây con có gốc tại đó. Từ đó có các phương pháp duyệt tiền thứ tự, trung thứ tự, hậu thứ tự đối với cây nhị phân có gốc tại đỉnh A như sau Duyệt tiền thứ tự cây con gốc A • Nếu Cây là rỗng Return • Thăm A • Duyệt tiền thứ tự cây con gốc L • Duyệt tiền thứ tự cây con gốc R Duyệt trung thứ tự cây con gốc A • Nếu Cây là rỗng Return • Duyệt trung thứ tự cây con gốc L • Thăm A • Duyệt trung thứ tự cây con gốc R Duyệt hậu thứ tự cây con gốc A • Nếu Cây là rỗng Return • Duyệt hậu thứ tự cây con gốc L • Duyệt hậu thứ tự cây con gốc R • Thăm A Ví dụ Giả sử có cây nhị phân sau A / \ B C / \ / \ D E F G • Duyệt tiền thứ tự với cây này diễn ra tuần tự như sau 1. Thăm A, Duyệt cây gốc B, Duyệt cây gốc C 2. Thăm A, Thăm B, Thăm D, Thăm E, Thăm C, Thăm F, Thăm G • Duyệt trung thứ tự với cây này diễn ra tuần tự như sau 1. Duyệt cây gốc B, Thăm A, Duyệt cây gốc C 2. Thăm D, Thăm B, Thăm E, Thăm A, Thăm F, Thăm C, Thăm G • Duyệt hậu thứ tự với cây này diễn ra tuần tự như sau 1. Duyệt cây gốc B, Duyệt cây gốc C, Thăm A 2. Thăm D, Thăm E, Thăm B, Thăm F, Thăm G, Thăm C, Thăm A Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 7 Giả mã Giả sử có một cây nhị phân mà cấu trúc mỗi nút của nó chứa một giá trị value và các tham chiếu left và right trỏ tới hai con của nút đó. Ta có thể viết các hàm sau: Duyệt tiền thứ tự (pre-order (prefix) traversal) visit(node) print node.value if node.left != null then visit(node.left) if node.right != null then visit(node.right) Duyệt hậu thứ tự (post-order (postfix) traversal) visit(node) if node.left != null then visit(node.left) if node.right != null then visit(node.right) print node.value Duyệt trung thứ tự (in-order (infix) traversal) visit(node) if node.left != null then visit(node.left) print node.value if node.right != null then visit(node.right) 22.3. Cài đặt cây nhị phân Cây nhị phân là một cấu trúc bao gồm các ph ần tử (nút) được kết nối với nhau theo quan hệ “cha-con” với mỗi cha có tối đa 2 con. Để biểu diễn cây nhị phân ta chọn phương pháp cấp phát liên kết. Ứng với một nút, ta dùng một biến động lưu trữ các thông tin: - Thông tin lưu trữ tại nút. - Địa chỉ nút gốc của cây con trái trong bộ nhớ. - Địa chỉ nút gốc của cây con phải trong bộ nhớ. Khai báo tương ứng trong ngôn ngữ C có thể như sau: typedef struct tagTNODE Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 8 { Data Key;//Data là kiểu dữ liệu ứng với thông tin lưu tại nút struct tagNODE *pLeft, *pRight; }TNODE; typedef TNODE *TREE; Do tính chất mềm dẻo của cách biểu diễn bằng cấp phát liên kết, phương pháp này được dùng chủ yếu trong biểu diễn cây nhị phân. Từ đây trở đi, khi nói về cây nhị phân, chúng ta sẽ dùng phương pháp biểu diễn này. Giáo t Kh 23.1. C 23.3.1 Định Cây t ì khóa s • • Dưới đ Nhận Cây t ì trúc dữ Nếu m này sử nhỏ hơ nút ch Nếu m trong trong hơn k h Việc c Một số trở nê trình - Cấu tr CNTT T Các loại câ 1 Cây nhị p nghĩa ìm kiếm ứn sao cho với Mọi khóa Mọi khóa đây là một xét ìm kiếm nhị ữ liệu trừu một BST có ử dụng các b ơn khóa của ha. một BST kh lý thuyết tậ cây con trá hóa của nút chọn đưa cá ố người cũn n phức tạp rúc dữ liệu v ờ ĐHSP ây thường g phân tìm ki g với n khó i mỗi mỗi nú trên cây co trên cây co ví dụ về câ ị phân là m tượng hơn n chứa các g bất đẳng th a nút cha, m hông chứa c ập hợp. Cây i có khóa n t cha. ác giá trị bằ ng đưa các hơn. và Giải thuậ PKT H Y Bài 23 gặp iếm óa k 1 ,k 2 , .k n út k: on trái đều n on phải đều ây nhị phân một cấu trúc như các tập giá trị giống hức không n mọi nút trên các giá trị gi y loại này sử nhỏ hơn khó ằng nhau và giá trị bằng t Yê 3: Thảo luận là cây nhị p nhỏ hơn khó lớn hơn kh tìm kiếm: dữ liệu cơ b p hợp, đa tập g nhau thì nó nghiêm ngặt n cây con ph iống nhau th ử dụng các óa của nút c ào cây con p g nhau vào c n về cây phân mà m óa trên nút hóa trên nút bản được sử p hợp, các d ó biểu diễn t. Mọi nút tr hải có nút lớ hì nó biểu d bất đẳng th cha, mọi nút phải (hay trá cả hai phía, mỗi nút đều đ k k ử dụng để x dãy kết hợp n một đa tập rong cây co ớn hơn hoặ diễn một tập hức nghiêm t trên cây co ái) là tùy th , nhưng khi được gán m xây dựng cá p. p hợp. Cây l on trái có kh c bằng khó p hợp đơn t ngặt. Mọi n on phải có n heo mỗi ngư đó việc tim 9 một ác cấu loại hóa a của trị như nút nút lớn ười. m kiếm Giáo trình - Cấu trúc dữ liệu và Giải thuật Khoa CNTT- Trường ĐHSPKT Hưng Yên 10 Nhờ ràng buộc về khóa trên BST, việc tìm kiếm trở nên có định hướng. Hơn nữa, do cấu trúc cây việc tìm kiếm trở nên nhanh đáng kể. Nếu số nút trên cây là N thì chi phí tìm kiếm trung bình chỉ khoảng log 2 N. Trong thực tế, khi xét đến cây nhị phân chủ yếu người ta xét BST. Chúng ta sẽ trở lại vấn đề này trong phần tìm kiếm 23.1.2. Cây cân bằng hoàn toàn (CCBHT) Định nghĩa: Cây cân bằng hoàn toàn là câynhị phân tìm kiếm mà tại mỗi nút của nó, số nút của cây con trái và cây con phải không chênh lệch nhau qúa một. Một cây rất khó đạt được trạng thái cân bằng hoàn toàn và cũng rất dễ mất cân bằng vì khi thêm hay huỷ các nút trên cây có thể làm mất cân bằng (xác suất rất l ớn), chi phí cân bằnglại cây là rất lớn vì phải thao tác trên toàn bộ cây. Tuy nhiên nếu cây cân đối thì việc tìm kiếm sẽ rất nhanh. Đối với CCBHT, trong trường hợp xấu nhất ta cũng chỉ phải tìm qua log 2 n phần tử (n là số nút trên cây) Sau đây là ví dụ về một CCBHT Hình 5.25. Cây cân bằng hoàn toàn CCBHT có n nút, có chiều cao h = log 2 n. Đây chínhlà lý do cho phép đảm bảo khả năng tìm kiếm nhanh trên cấu trúc dữ liệu này. Do CCBHT là một cấu trúc kém ổn định nên trong thực tế không thể sử dụng. Nhưng ưu điểm của nó lại rất quan trọng. V ì vậy, cần đưa ra một cấu trúc dữ liệu khác có đặc tính giống CCBHT nhưng ổn định hơn. Như vậy, cần tìm cách tổ chức một cây đạt trạng thái cân bằng y ếu hơn và việc cân bằng lại chỉ xảy ra ở phạm vi cục bộ nhưng vẫn đảm bảo chi phí cho thao tác tìm kiếm đạt ở mức O(log 2 n). 23.1.3 Cây cân bằng Năm 1962, P.M. ADELSON - VELSKI và E.LANDIS đã mở đầu phương hướng giải quyết này bằng cách đưa ra dạng cây cân đối mới mà sau này mang tên của họ, đó là cây nhị phân cân đối AVL. Từ nay về sau, chúng ta sẽ dùng thuật ngữ cây AVL thay cho cây cân bằng. Từ khi được giới thiệu, cây AVL đã nhanh chóng tìm thấy ứng dụng trong nhiều bài toán khác nhau. Vì vậy, nó mau chóng trở nên thịnh hành và thu hút nhiều nghiên cứu. Từ câyAVL, người ta đã phát triển thêm nhiều loại cấu trúc d ữ liệu hữu dụng khác như cây đỏ - đen, B - Tree, . Định nghĩa: cây AVL là cây nhị phân tìm kiếm mà tại mỗi nút của nó độ cao của cây con trái và của cây con phải chênh lệch nhau không qúa một. 25 90 2 30 5 [...]... sung vào cây nhị phân tìm kiếm Cân bằng lại các đỉnh mà tại đó tính cân bằngbị phá vỡ (độ cao của hai cây con khác nhau 2) Xét các tr-ờng hợp sau TH1: Cây lệch trái (lệch phải ) sau khi bổ sung vào cây con phải (trái) cây cân bằng TH2: Hai cây con có độ cao bằng nhau sau khi bổ sung thì cây lệch trái hoặc lệch phải TH3: Cây con trái (phải) cao hơn cây con phải (trái)1, sau khi bổ sung vào cây con trái... đơn th h i Nhận xét: Sau khi thực hiện phép quay để tái cân đối cây con mà nút gốc là nút bất th-ờng không làm ảnh h-ởng đến chiều cao của các cây con đó vẫn giữ nguyên nh- tr-ớc lúc bổ sung, nghĩa là phép quay không làm ảnh h-ởng tới chiều cao các cây có liên quan tới cây con này Trong quá trình thực hiện các phép quay, tính chất của cây nhị phân tìm kiếm luôn luôn đ-ợc đảm bảo Khoa CNTT- Trng HSPKT... O(h) Với cây cân bằng trung bình hai lần thêm vào cây thì cần một lần cân bằng lại; 5 lần huỷ thì cần một lần cân bằng lại Việc huỷ một nút có thể phải cân bằng dây chuyền các nút từ gốc cho đến phần tử bị huỷ trong khi thêm vào chỉ cần một lần cân bằng cục bộ Độ dài đ-ờng tìm kiếm trung bình trong cây cân bằng gần bằng cây cân bằng hoàn toàn, nh-ng việc cân bằng lại đơn giản hơn nhiều Một cây cân... (h) chỉ cây con có chiều cao h TH3.1: Nút bổ sung làm tăng chiều cao cây con trái của nút con trái nút nút bất th-ờng 2 2 1 Khoa CNTT-1Trng HSPKT Hng Yờn (h) h + (h) h + 2 12 Giỏo trỡnh - Cu trỳc d liu v Gii thut a) Tr-ớc khi bổ b) Hình 5.28 Sau khi bổ sung cây mất â đối Đối với tr-ờng hợp này để tái cân đối ta phải thực hiện phép quay từ trái sang phải để đ-a nút (1) lên vị trí gốc cây con,... còn gọi là phép quay phải P P Q 1 1 2 (h) h + 2 (h) (h) Q h + 2 (h) (h+1) (h) Hình 5.29 Quay phải cây P Ví dụ: Cho CNPTK sau 25 25 25 12 90 12 35 12 90 35 35 10 90 10 b) Bổ sung út (10) a) Cây ban đầu thêm c) Tái cân đối bằng phép quay đơn Hình 5.30 TH3.2: Nút mới bổ sung làm tăng chiều cao cây con phải của nút con trái nút bất th-ờng 3 3 1 1 2 2 Khoa CNTT- Trng HSPKT h + 1 Hng Yờn (h) (h) ... tr-ờng hợp khi bổ sung thêm nút mới làm tăng chiều cao cây con phải của nút con phải và nút mới bổ sung làm chiều cao cây con trái của nút con phải nút bất th-ờng, thì ta lần l-ợt thực hiện theo thứ tự ng-ợc lại t-ơng ứng với tr-ờng hợp TH3.1 và TH3 2 Ví dụ sau đây minh hoạ cụ thể và các phép xử lý t-ơng ứng 5 5 2 4 25 7 1 5 3 2 7 90 12 2 7 1 4 10 1 a) Cây ban đầu 5 2 1 5 1 1 2 5 3 3 7 1 4 2 5 3 6 g) Bổ... phép quay kép (double rotation), đólà việc phối hợp hai phép quay đơn: quay trái đối với cây con trái ((1), (2)) và quay phải đối với cây ((3), (2)) nh- hình 5.32 3 2 1 2 (h-1) (h) 1 (h) (h) (h) a)Sau phép quay đơn thứ nhất quay tr i 3 (h) (h-1) (h) b)Sau phép quay đơn thứ hai quay phải Hình 5.32 Ví dụ: cho cây nh- hình vẽ 35 25 12 90 30 25 25 35 a)Bổ sung út (30) 90 12 thêm 30 b)Sau phép đơn... hợp TH3.1 1 6 6 3 5 7 h) Sau phép quay i) Sau phép quay đơn thứ nhất đơn thứ hai (quay (quay phải) trái) Hình 5.34 Huỷ một nút trên cây AVL Khoa CNTT- Trng HSPKT Hng Yờn 15 Giỏo trỡnh - Cu trỳc d liu v Gii thut Cũng giống nh- thao tác thêm một nút, việc huỷ nút x ra khỏi cây AVL thực hiện giống nh- trên CNPTK Chỉ sau khi huỷ, nếu tính cân bằng bị phá vỡ thì ta sẽ thực hiện việc cân bằng lại Tuy nhiên... phải (trái)1, sau khi bổ sung vào cây con trái (phải) thì hai cây này có độ cao chênh nhau là 2 Nh- vậy, tính cân bằng bị phá vỡ Đối với các tr-ờng hợp TH1 và TH2 khi bổ sung nút mới thì tính cân bằng không bị phá vỡ nên ta chỉ cần chỉnh lại các hệ số cân bằng ở nút đang xét và ở các nút tiền bối của nó Đối với tr-ờng hợp TH3 ta phải sửa lại cây con mà ta đang xét là nút gốc (ta sẽ gọi là nút bất th-ờng)... cục bộ Độ dài đ-ờng tìm kiếm trung bình trong cây cân bằng gần bằng cây cân bằng hoàn toàn, nh-ng việc cân bằng lại đơn giản hơn nhiều Một cây cân bằngkhông bao giờ cao hơn 45% cây cân bằng hoàn toàn t-ơng ứng dù số nút trên cây là bao nhiêu 23.1.4 Cõy en Cõy en (ting Anh: red-black tree) l mt dng cõy tỡm kim nh phõn t cõn bng, mt cu trỳc d liu c s dng trong khoa hc mỏy tớnh Cu trỳc ban u ca nú c . cây tổng quát với định nghĩa phép duyệt cây nhị phân. Vì cây nhị phân cũng có thể coi là cây tổng quát và ta có thể áp dụng định nghĩa phép duyệt cây tổng. như liên kết Right ta có một cây nhị phân t ương đương với cây tổng quát. Ví dụ • Cây tổng quát A / | B C D / | E F G • Cây nhị phân tương đương A /