1.
G
tìm
k
hn
nhiê
n
khô
n
nên
nha
n
bn
g
cây
2
hiu
tron
g
to
r
G
II THI
Cây tì
m
k
iếm nhan
h
Tuy nhi
ê
chế. Nó h
. Tuy nh
n
g hiu qu
không câ
n
h (hoc c
h
Chúng
t
g
: đó là câ
y
Có nhi
u
2
-3-4. Tu
y
qu nht,
g
nhng t
Trước k
r
a 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
bng. Kh
h
èn hoc
x
t
a kho s
á
y
đỏ đen, l
à
u
cách tiế
p
y
vy, tro
n
ít ra thì k
h
p tin.
h
i kho s
á
n
ào.
H
ình 1. C
á
BÀI 6:
C
phân là
m
m
t s trư
t
t nếu d
liu đượ
c
tr s cn
i cây khô
n
x
óa) mt p
h
á
t mt cá
c
à
cây tìm
k
p
cn khác
n
g phn l
n
h
i d liu
đ
á
t cây đỏ đ
á
c node đư
C
ÂY ĐỎ
m
t cu tr
ú
ng hp c
â
liu được
c
chèn và
o
chèn đã đ
u
n
g cân bn
h
n t đã
c
c
h gii qu
y
k
iếm nh p
h
để bo đ
n
t
r
ường
h
đ
ược lưu t
r
en, hãy x
e
c chèn t
h
ĐEN
ú
c lưu tr
d
â
y tìm kiế
m
chèn vào
o
theo th
t
u
c sp x
ế
g, nó mt
c
ho.
y
ết vn đ
h
ân có thê
m
m cho câ
y
h
p, cây đ
r
trong b
e
m li cây
k
h
eo th t
t
liu t
nh phâ
cây theo
t
đã đu
c
ế
p thì cây
n
đi kh nă
ca cây
m
mt vài
cân bng
đen là c
â
nh ch
hông câ
t
ăng dn
t
vi tc
đ
n
có mt s
t
h t ng
c
sp xếp
s
n
h phân t
r
n
g tìm kiế
m
không c
â
đặc đim
: chng h
â
y cân b
n
không ph
n
bng đư
1
đ
u
s
r
m
â
n
.
n
n
g
i
c
m
ca
n
Độ
p
mt
v
O
đảm
ngh
ĩ
con
b
2.
Đ
Cây
(hìn
h
Khi
quy
Nhng
n
m
i node l
n
út t
r
ước
đ
hc t
Khi cây
chiu tha
(N), thay
Để bo
đ
cây luôn
ĩ
a là mi n
o
b
ên trái.
Đ
NH NG
H
đỏ đen là
h
2)
(1) Mi
(2) Nod
e
(3) Nếu
(4) Mi
chèn (hay
tc đỏ đe
n
n
ode này t
n hơn no
d
đ
ó. Khi y
,
p
:
mt nhán
h
y
vì hai ch
i
v
ì O(log
2
N
đ
m thi
g
luôn cân
b
o
de t
r
ên c
â
H
ĨA CÂY
Đ
mt cây
n
node phi
e
gc và c
á
mt node
đường d
n
xóa) mt
n
. Nếu đượ
c
sp xếp
d
e đã đượ
c
,
cây b m
h
, s tr t
h
i
u. Tron
g
N
) đối vi
c
g
ian truy
x
b
ng (ít r
a
â
y phi có
Đ
ĐEN
n
h phân t
ì
đỏ ho
c
á
c node lá
đỏ, nh
n
n
t gc đ
ế
node mi,
c
tuân th,
thành m
t
c
chèn vào
t cân bn
g
h
ành mt
d
g
t
r
ường h
c
ây cân b
n
x
ut nhanh
a
cũng là
c
xp x s
n
ì
m kiếm (
B
c
đen.
(NIL) ph
n
g node c
o
ế
n mt lá
p
cn phi
t
cây s đư
t
đường k
h
trước đó,
g
hoàn toà
n
d
anh sách
p này, th
n
g.
ca cây,
c
c
ây gn câ
n
n
ode con
b
B
ST) tuâ
n
i luôn luô
n
o
n ca nó
p
p
hi có cù
n
t
uân th c
á
c cân b
n
ông phân
mi node
n
.
liên kết,
d
i gian tru
húng ta c
bng).
b
ên phi b
th các
n
đen.
p
hi đen.
n
g s lượn
g
c quy tc
n
g.
nhánh. B
là con ph
d
liu s
l
y
xut gi
m
n phi b
Đ
iu này c
ng s no
d
q
uy tc sa
u
g
node đe
n
t
r
ên -gi
l
2
i
i
l
à
m
o
ó
d
e
u
:
n
.
l
à
3
Hình 2. Mt ví d v cây đỏ đen
S lượng node đen trên mt đường dn t gc đến lá được gi là chiu
cao đen (black height). Ta có th phát biu quy tc (4) theo mt cách khác là
mi đường dn t gc đến lá phi có cùng chiu cao đen.
Khai báo cu trúc:
typedef int Data; /* Kiu d liu khoá */
typedef enum { BLACK, RED } nodeColor;
typedef struct NodeTag {
nodeColor color; /* Màu node (BLACK, RED) */
Data info; /* Khoá s dng tìm kiếm */
struct NodeTag *left; /* Con trái */
struct NodeTag *right; /* Con phi */
struct NodeTag *parent; /* Cha */
} NodeType;
typedef NodeType *iterator;
B đề:
Mt cây đỏ đen n-node có chiu cao h <= 2 log2(n+1)
3. PHÉP QUAY
Thc ra quay không có nghĩa là các node b quay mà để ch s thay
đổi quan h gia chúng. Mt node được chn làm "đỉnh" ca phép quay.
Nếu chúng ta đang thc hin mt phép quay qua phi, node "đỉnh" này s di
chuyn xung dưới và v bên phi, vào v trí ca node con bên phi ca nó.
Node con bên trái s đi lên để chiếm ly v trí ca nó.
trái.
qua
y
4.
T
địn
h
nod
e
đỏ,
n
cây
đ
Phi đả
m
Nếu khôn
g
trái, nod
HÊM NO
Chúng t
h
nhãn nh
n
e
mi đượ
c
n
ghĩa là c
ó
X là
m
P là n
o
G là n
Trong
q
đ
đen, ch
ú
Các p
h
Các p
h
Các p
h
Hìn
m
bo tro
n
g
chng c
ó
e
đỉnh p
h
D
E
M
I
a s xem
x
n
g node li
ê
c
chèn, ho
ó
cùng mà
u
m
t node c
h
o
de cha c
ode ông b
à
q
uá trình t
h
ú
ng ta s t
h
h
ép lt mà
u
h
ép quay
k
h
ép quay t
r
h 3.
Q
n
g phép
q
ó
để qu
a
h
i có nod
e
x
ét vic m
ô
ê
n quan.
X
c node c
o
u
đỏ).
h
o t
r
ước.
a X.
à
ca X (n
o
h
êm vào
n
h
c hin c
u
trên đườ
n
k
hi node đ
ã
r
ên đường
Q
uay trái v
à
q
uay phi,
a
y vào đi
m
e
con phi.
ô
t qui t
r
ì
X
là node
v
o
n khi nod
o
de cha c
n
ode mi
c
ác thao tá
c
n
g đi xu
n
ã
được ch
è
đi xung.
à
quay ph
node đ
m
đỉnh. T
ư
ì
nh chèn.
G
v
i phm qu
y
e cha và
n
a P).
c
ó th vi
p
c
sau đây:
n
g.
è
n.
i
nh phi c
ư
ơng t, n
ế
G
i X, P,
v
tc (X c
ode con x
hm các
ó
node co
ế
u làm phé
v
à G để c
h
ó
th là m
u
ng đột đ
q
uy tc c
4
n
p
h
t
-
a
4.1
phâ
n
đi q
u
phé
p
phé
p
con
nod
e
gi
n
nod
e
hìn
h
Các phé
Phép th
ê
thông th
u
a phi ha
y
Tuy nhi
ê
p
lt màu
v
Để bo
p
lt màu
k
Nếu ph
é
đỏ, chúng
cha là no
Mt ph
é
ode đỉ
cha). Ch
h
4a.
H
ì
p
l
t mà
u
ê
m vào tr
o
ư
ng: đi t
h
y
trái tùy
v
ê
n, trong
c
v
à quay.
đảm khôn
k
hi cn the
o
é
p thêm và
ta đổi cá
c
de gc, nó
é
p lt màu
n
h tam giá
c
ú
ng ta gi
ì
nh 4a. t
r
ư
u
trên đư
o
ng cây đ
h
eo mt đ
ư
v
ào giá t
r
c
c
ây đỏ đe
n
g vi ph
m
o
quy tc
n
o làm xu
t
c
node co
n
vn vn
g
nh hưởn
g
c
, node c
ó
hai node
Hìn
h
c khi lt
m
ng đi x
u
đen bt
ư
ng dn
t
c
a khóa
n
n
, đến đượ
c
m
các quy
t
n
hư sau:
t
hin tình
n
thành đe
n
g
i màu là
g
đến các
q
ó
màu đen
con trái v
à
h
4. Lt m
à
m
àu, Hình
u
ng
đầu như t
r
t
node g
n
ode và kh
ó
c
đim ch
è
t
c màu, c
t
r
ng mt
n
và node
đen).
q
uy tc đ
trước phé
p
à
phi ca
à
u
4b sau kh
i
r
ên cây tì
m
c đến v t
ó
a tìm kiế
m
è
n là phc
n phi ti
node đen
cha thành
-đen ra sa
o
p
lt là P
(
P là X1
v
i
lt màu.
m
kiếm n
h
r
í cn chè
n
m
.
tp bi c
á
ế
n hành c
á
có hai no
d
đỏ (tr k
h
o
? chúng
t
(
P thay c
h
v
à X2. Xe
m
5
h
n
,
á
c
á
c
d
e
h
i
t
a
h
o
m