Tải bản đầy đủ (.pdf) (13 trang)

Tài liệu Cấu trúc dữ liệu nâng cao P6 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (697.82 KB, 13 trang )


1.
G
tìm k
hạn
nhiê
n
khôn
nên
nha
n
bằng
cây 2
hiệu
tron
g
tạo r
GIỚI THIỆ
Cây tìm
kiếm nhanh
Tuy nhiê
chế. Nó h
n. Tuy nhi
ng hiệu quả
không cân
nh (hoặc ch
Chúng t
g: đó là cây
Có nhiều
2-3-4. Tuy
quả nhất,


g những tậ
Trước k
ra như thế n
H
ỆU
m kiếm nhị
h.
ên trong m
oạt động t
iên, nếu dữ
ả. Khi các
n bằng. Kh
hèn hoặc x
ta khảo sá
y đỏ đen, là
u cách tiếp
y vậy, tron
ít ra thì kh
ập tin.
hi khảo sá
nào.
Hình 1. Cá
BÀI 6: C
phân là m
một số trườ
tốt nếu dữ
ữ liệu được
trị số cần
i cây khô
n

xóa) một ph
át một các
à cây tìm k
p cận khác
ng phần lớn
hi dữ liệu đ
át cây đỏ đ
ác node đư
CÂY ĐỎ
một cấu trú
ờng hợp câ
liệu được
c chèn vào
chèn đã đu
ng cân bằn
hần tử đã c
ch giải quy
kiếm nhị ph
để bảo đả
n trường h
được lưu tr
en, hãy xe
ợc chèn th
ĐEN
úc lưu trữ d
ây tìm kiếm
chèn vào
o theo thứ t
uợc sắp xế
g, nó mất

cho.
yết vấn đề
hân có thêm
ảm cho cây
hợp, cây đỏ
rữ trong bộ
em lại cây k

heo thứ tự t
dữ liệu tốt
m nhị phân
cây theo t
tự đã đuợc
ếp thì cây n
đi khả năn
ề của cây
m một vài
y cân bằng
ỏ đen là câ
ộ nhớ chứ
không cân
tăng dần
t với tốc đ
n có một s
thứ tự ngẫ
c sắp xếp s
nhị phân tr
ng tìm kiếm
không câ
đặc điểm

: chẳng h

ây cân bằn
không phả
n bằng đượ
1
độ

ẫu
sẽ
rở
m
ân
.
ạn
ng
ải
ợc


m
của n
Độ p
một
về
O
đảm
ngh
ĩ
con b

2. Đ
Cây
(hìn
h
Khi
quy
Những
n
mỗi node lớ
nút trước đ
phức tạp
Khi cây
chiều tha
y
O(N), thay v
Để bảo đ
cây luôn
ĩa là mỗi no
bên trái.
ĐỊNH NGH
đỏ đen là
h 2)
(1) Mọi
(2) Nod
e
(3) Nếu
(4) Mọi
chèn (hay
tắc đỏ đe
n

node này tự
ớn hơn nod
đó. Khi ấy,
p:
một nhán
h
y vì hai chi
vì O(log
2
N
đảm thời g
luôn cân b
ode trên câ
HĨA CÂY Đ
một cây n
node phải
e gốc và cá
một node
đường dẫ
n
xóa) một
n. Nếu được
ự sắp xếp
de đã được
, cây bị mấ
h, sẽ trở th
iều. Trong
N) đối với c
gian truy x
bằng (ít ra

ây phải có
ĐỎ ĐEN
nhị phân tì
là đỏ hoặc
ác node lá
là đỏ, nhữ
n
n từ gốc đế
node mới,
c tuân thủ,
thành một
c chèn vào
ất cân bằng
hành một d
g trường hợ
cây cân bằn
xuất nhanh
a cũng là c
xấp xỉ số n
ìm kiếm (B
c đen.
(NIL) phả
ng node co
ến một lá p
cần phải t
cây sẽ đư
t đường kh
trước đó,
g hoàn toàn
danh sách

ợp này, thờ
ng.
của cây,
c
cây gần cân
node con b
BST) tuân
i luôn luôn
on của nó p
phải có cùn
tuân thủ cá
ợc cân bằn
hông phân
mỗi node
n.
liên kết,
d
ời gian truy
chúng ta cầ
n bằng). Đ
bên phải bằ
n thủ các q
n đen.
phải đen.
ng số lượng
ác quy tắc
ng.

nhánh. Bở
là con phả

dữ liệu sẽ l
y xuất giảm
ần phải bả
Điều này c
ằng số nod
quy tắc sau
g node đen
trên -gọi l
2
ởi
ải

m
ảo
ó
de
u:
n.


3
Hình 2. Một ví dụ về cây đỏ đen
Số lượng node đen trên một đường dẫn từ gốc đến lá được gọi là chiều
cao đen (black height). Ta có thể phát biểu quy tắc (4) theo một cách khác là
mọi đường dẫn từ gốc đến lá phải có cùng chiều cao đen.
Khai báo cấu trúc:
typedef int Data; /* Kiểu dữ liệu khoá */
typedef enum { BLACK, RED } nodeColor;
typedef struct NodeTag {
nodeColor color; /* Màu node (BLACK, RED) */

Data info; /* Khoá sử dụng tìm kiếm */
struct NodeTag *left; /* Con trái */
struct NodeTag *right; /* Con phải */
struct NodeTag *parent; /* Cha */
} NodeType;
typedef NodeType *iterator;
Bổ đề:
Một cây đỏ đen n-node có chiều cao h <= 2 log
2
(n+1)
3. PHÉP QUAY
Thực ra quay không có nghĩa là các node bị quay mà để chỉ sự thay
đổi quan hệ giữa chúng. Một node được chọn làm "đỉnh" của phép quay.
Nếu chúng ta đang thực hiện một phép quay qua phải, node "đỉnh" này sẽ di
chuyển xuống dưới và về bên phải, vào vị trí của node con bên phải của nó.
Node con bên trái sẽ đi lên để chiếm lấy vị trí của nó.


trái.
qua
y
4. T
định
node
đỏ, n
cây đ
Phải đảm
Nếu không
y trái, node
THÊM NOD

Chúng t
h nhãn nhữn
e mới được
nghĩa là có
− X là m
− P là no
− G là n
Trong
q
đỏ đen, chú
− Các ph
− Các ph
− Các ph

Hìn
m bảo tron
g chẳng có
e ở đỉnh ph
DE MỚI
a sẽ xem
x
ng node liê
c chèn, hoặ
ó cùng màu
một node ch
ode cha củ
ode ông bà
quá trình th
úng ta sẽ th
hép lật màu

hép quay k
hép quay tr
h 3. Q
ng phép q
ó gì để qua
hải có node
xét việc mô
ên quan. X
ặc node co
u đỏ).
ho trước.
ủa X.
à của X (no
hêm vào n
hực hiện c
u trên đườn
khi node đã
rên đường
Quay trái và

quay phải,
ay vào điểm
e con phải.
ô tả qui trì
X là node v
on khi nod
ode cha củ
node mới c
ác thao tác
ng đi xuốn

ã được chè
đi xuống.
à quay phả
node ở đỉ
m đỉnh. Tư
ình chèn. G
vi phạm quy
e cha và n
ủa P).
có thể vi p
c sau đây:
ng.
èn.

ải
ỉnh phải có
ương tự, nế
Gọi X, P, v
y tắc (X có
node con xu
phạm các q
ó node co
ếu làm phé
và G để ch
ó thể là mộ
ung đột đỏ
quy tắc củ
4
n
p

hỉ
ột
ỏ-
ủa

4.1
phâ
n
đi qu
phép
phép
con
nod
e
gọi n
node
hình
Các phép
Phép thê
n thông thư
ua phải hay
Tuy nhiê
p lật màu v
Để bảo
p lật màu k
Nếu phé
đỏ, chúng
e cha là no
Một ph
é

node ở đỉn
e cha). Chú
h 4a.
H
ì
p lật màu
êm vào tro
ường: đi th
y trái tùy v
ên, trong c
và quay.
đảm khôn
khi cần theo
ép thêm và
ta đổi cá
c
de gốc, nó
ép lật màu
nh tam giác
úng ta gọi
ình 4a. trướ
u trên đườ
ong cây đỏ
heo một đư
vào giá trị c
cây đỏ đen
g vi phạm
o quy tắc n
o làm xuất
c node con

vẫn vẫn g
ảnh hưởng
c, node có
hai node
Hìn
h
ớc khi lật m
ờng đi xu
ỏ đen bắt
ường dẫn t
của khóa n
n, đến được
m các quy t
như sau:
t hiện tình
n thành đen
giữ màu là
g đến các q
ó màu đen
con trái v
à
h 4. Lật mà
màu, Hình
uống
đầu như t
r
từ node gố
node và khó
c điểm chè
tắc màu, cầ

trạng một
n và node
đen).
quy tắc đỏ
trước phép
à phải của
àu
4b sau kh
i
rên cây tìm
ốc đến vị tr
óa tìm kiếm
èn là phức
ần phải tiế
node đen
cha thành
ỏ-đen ra sao
p lật là P (
P là X1 v
i lật màu.
m kiếm nh
rí cần chèn
m.
tạp bởi c
á
ến hành cá
có hai nod
đỏ (trừ kh
o? chúng t
(P thay ch

và X2. Xem

5
hị
n,
ác
ác
de
hi
ta
ho
m

×