Chuyển từ cõy 2-3-4 sang cõy Đỏ-Đen

Một phần của tài liệu giáo trình cấu trúc dữ liệu 2 (Trang 83 - 86)

10, 20 20 55 62, 64, 66 75 83, 86CHƯƠNG 4 – B-TREE VÀ BỘ NHỚ NGOÀ

1.6. Chuyển từ cõy 2-3-4 sang cõy Đỏ-Đen

Một cõy 2-3-4 cú thể được chuyển sang cõy đỏ-đen bằng cỏch ỏp

dụng cỏc luật sau:

- Chuyển đổi bất kỳ 2-node ở cõy 2-3-4 sang node đen ở

cõyđỏ-đen.

- Chuyển đổi bất kỳ 3-node sang node con C (với hai con

của chớnh nú) và node cha P (với cỏc node con C và node con khỏc). Khụng cú vấn đề gỡ ở đõy khi một mục trở

thành node con và mục khỏc thành node chạ C được tụ

màuđỏ và Pđược tụ màuđen.

- Chuyển đổi bất kỳ 4-node sang node cha P và cả hai

node con C1, C2 màuđỏ.

Hỡnh 4.7 trỡnh bày cỏc chuyển đổi nàỵ Cỏc node con trong cỏc cõy conđược tụ màuđỏ; tất cả cỏc node khỏc được tụ màuđen.

Hỡnh 4.8 trỡnh bày cõy 2-3-4 và cõyđỏ-đen tương ứng với nú bằng

cỏch ỏp dụng cỏc chuyển đổi nàỵ Cỏcđường chấm xung quanh cỏc

cõy con được tạo ra từ 3-node và 4-nỳt. Cỏc luật của cõy đỏ-đen tự

động thoả món với sự chuyển đổi nàỵ Kiểm tra rằng: Hai node đỏ

khụng bao giờ được kết nối, và số lượng cỏc node đen là nhưnhauở

mọi đường dẫn từ gốc đến lỏ (hoặc node con null).

Bạn cú thể nghĩ rằng một 3-node ở cõy 2-3-4 là tương đương với

node cha cú một node con màu đỏ ở cõy đỏ-đen, và một 4-node là tươngđương với node cha cú hai node con đỏ. Điều này cú nghĩa là node cha màu đen với node con đen ở cõy đỏ-đen khụng biểu diễn

một 3-nodeở cõy 2-3-4; nú chỉ biểu diễn một 2-node với node con

2-node khỏc. Tương tự, một node cha màu đen với 2 con màu đen khụng biểu diễn cho 4-nỳt.

30, 50, 80

20, 25 40 70, 75 90

50

10, 20, 25 40 70, 75 90

Hỡnh 4.7Chuyển đổi từ cõy 2-3-4 sang cõyđỏ-đen Hỡnh 4.8 Cõy 2-3-4 và cõyđỏ-đen tươngứng 33 M N 33 N M Đen 2-Node P Đỏ 27, 55 N M P 55 27 M N P 27 55 N M OR 3-Node 4-Node 16, 42, 66 M N P Q 42 66 P N 16 M Q Đen Đỏ Đen Đỏ 37 30, 34 48, 60, 82 5 32, 33 35 40 50, 53, 57 69 86, 98 37 34 60 30 35 48 82 5 32 40 53 33 69 98 50 57 86

 Sự tươngđương

Khụng những cấu trỳc của cõy đỏ-đen phự hợp với cõy 2-3-4, mà cỏc thao tỏc hoạt động của hai loại cõy này cũng tươngđương nhaụ Trong cõy 2-3-4 nú được giữ cõn bằng bằng việc tỏch nỳt. Trong

cõyđỏ-đen hai phương thức cõn bằng là sự lật và quay màụ

 Việc tỏch 4-node và lật màu

Trong cõy 2-3-4 khi bạn tỡm xuống điểm chốn cho node mới, bạn

tỏch mỗi 4-node thành hai 2-nỳt. Trong cõy đỏ-đen bạn thực hiện

việc lật màụ Làm thế nào mà cỏc thao tỏc này là tương đương với

nhaủ

Hỡnh 4.9Tỏch 4-node và lật màu

Trong hỡnh 4.9.i trỡnh bày một 4-node trong cõy 2-3-4 trước khi bị

tỏch nỳt; Hỡnh 4.9.ii trỡnh bày tỡnh trạng sau khi tỏch nỳt. 2-node (là cha của 4-nỳt) trở thành 3-nỳt.

Trong hỡnh 4.9.iiị trỡnh bày cõyđỏ-đen tươngđương với cõy 2-3-4

ở hỡnh 4.9.i,. Đường chấm viền quanh sự tương đương của 4-nỳt. Lật màuđưađến kết quả cõy đỏ-đenở hỡnh 4.9.iv. Bõy giờ cỏc node

40 và 60 là màu đen và 50 là màu đỏ. Kết quả 50 và node cha của

nú hỡnh thành sự tương đương với một 3-nỳt, như trỡnh bày bằng

đường chấm. Điều này tương tự 3-node định dạng bằng việc tỏch

node trong hỡnh 4.9.iị

Kết quả chỳng ta thấy rằng việc tỏch một 4-node trong quỏ trỡnh chốn ở cõy 2-3-4 là tương đương với việc thực hiện lật màu trong quỏ trỡnh chốnở cõy đỏ-đen.

 Tỏch 3-node và quay

Khi một 3-node ở cõy 2-3-4 được chuyển sang cõy đỏ-đen tương đương của nú, cú thể cú hai sự sắp xếp, như trỡnh bày trong hỡnh 4.8. Cả hai mục dữ liệu cú thể trở thành node chạ Tựy thuộc vào node nàođược chọn, node con sẽ là node con bờn trỏi hoặc node con

bờn phải, vàđộ dốc của đường thẳng nối node cha và node con sẽ ở

bờn trỏi hoặc bờn phảị

Cả hai sự sắp xếp là hợp lệ; Tuy nhiờn, chỳng khụng tham gia để

cõn bằng cõỵ Chỳng ta hóy xem xột tỡnh huống trong ngữ cảnh lớn

hơn.

Hỡnh 4.10-i trỡnh bày cõy 2-3-4 cũn hỡnh 4.10-ii, và 4.10-iii trỡnh bày cỏc cõyđỏ-đen tươngđươngđược suy ra từ cõy 2-3-4 bằng cỏch

ỏp dụng cỏc luật chuyển đổi ở trờn. Sự khỏc nhau giữa chỳng là cỏch lựa chọn hai mục dữ liệu nào trong 3-nodeđể tạo node cha; Trong

hỡnh ii, 80 là node cha, trong hỡnh iii, 70 là node chạ

Mặc dự cỏch sắp xếp này là hợp lệ, bạn cú thể thấy rằng cõy trong

hỡnh ii là khụng cõn bằng trong khi cõy trong hỡnh iii là cõn bằng.

Với cõy đỏ-đen được cho trong hỡnh ii, chỳng ta sẽ quay nú sang

phải (và thực hiện việc chuyển đổi hai màu) để cõn bằng nú. Điều

(i) tr-ớc khi tách i(i) sau khi tách

(iii) tr-ớc khi lật màu (iv) sau khi lật màu

7040, 50, 60 80 40, 50, 60 80 50, 70 60 80 40 50 70 80 60 40 50 70 80 60 40 4- Node 3- Node 4- Node 3- Node

đỏng ngạc nhiờn sự quay này cho kết quả chớnh xỏc giống nhưcõy trong hỡnh iiị

Hỡnh 4.10:3-node và phộp quay

Kết quả chỳng ta sẽ thấy sự tươngđương giữa phộp quay trong cõy

đỏ-đen và sự lựa chọn node nàođó là node cha khi chuyển đổi cõy

2-3-4 sang cõy đỏ-đen. Mặc dự chỳng ta khụng chỉ ra điều này, sự

tương đương tương tự cú thể nhận thấy khi cần thiết quay hai lần

bờn trong cỏc node chỏụ

Một phần của tài liệu giáo trình cấu trúc dữ liệu 2 (Trang 83 - 86)

Tải bản đầy đủ (PDF)

(121 trang)