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

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

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 (1.42 MB, 11 trang )



1.CÂ
1.1.
nó,
s
con p
1.2.
mất
bằn
g
phải
Sau

bảo
trúc
nó l

CCB

ÂY CÂN
ÂY NHỊ P
Định ngh
Cây cân
số nút của
phải.
Đánh gi
á
Một cây
cân bằng v
g, chi phí c



Đối vớ
i
tìm qua lo
đây là ví d


CCBH
T
đảm khả n
kém ổn đị
ại rất quan
BHT nhưng
BẰNG
PHÂN CÂN
hĩa
n bằng hoàn
cây con tr
á
y rất khó đạ
vì khi thêm
cân bằng lạ
i cây cân
og
2
N
phần t
dụ một cây
T có N nút
năng tìm k

ịnh nên tro
n trọng. Vì
g ổn định h
N BẰNG
n toàn là c
rái chênh l
ạt được trạ
m hay hủy
ại cây cao v
bằng hoàn
tử (N là số
cân bằng
h
có chiều ca
kiếm nhanh
ong thực tế
vậy, cần đ
hơn.
HOÀN TO
cây nhị phâ
lệch không
ạng thái cân
y các nút tr
vì phải thao
n toàn, tro
nút trên câ
hoàn toàn
ao h ≈ log
2
h trên CTD

ế không th
đưa ra một
OÀN
ân tìm kiếm
g quá một
n bằng hoà
rên cây có
o tác trên t
ong trường
ây).
(CCBHT)
2
N. Đây ch
DL này. Do
hể sử dụng
t CTDL kh
m mà tại m
so với số n
àn toàn và
ó thể làm c
toàn bộ cây
g hợp xấu
:
hính là lý d
o CCBHT
. Nhưng
ư
hác có đặc
mỗi nút củ
nút của câ

cũng rất d
cây mất câ
y.
nhất ta c
h
do cho phé
là một c

ưu điểm củ
c tính giốn
1
ủa
ây
dễ
ân
hỉ
p
ấu
ủa
ng

2.
C
2.1.
của
c



đún

g

2.2.
cây
cây
n
nhiều

2.3.

CÂY NHỊ P
Định ngh
Cây nhị
cây con trá
Dưới đâ
Dễ dàng
g không đú
Lịch sử
AVL là
cân bằng
A
nhị phân c
u loại CTD
Chiều ca
PHÂN CÂ
hĩa:
phân tìm
ái và của câ
ây là ví dụ c
g thấy CCB

úng.
cây cân
b
tên viết tắt
Adelson-V
ân băng là
DL hữu dụ
ao của câ
ÂN BẰNG
kiếm cân b
ây con phả
cây nhị ph
BHT là câ
bằng (AV
t của các tá
Velskii và L
à cây AVL.
ụng khác n
ây AVL
G (AVL Tre
bằng là câ
ải chênh lệc
hân cân bằn
ây cân bằng
VL Tree)
ác giả ngườ
Landis (19
. Từ cây A
như cây đỏ
ee)

ây mà tại m
ch không q
ng :
g. Điều ng
ời Nga đã
962). Vì lý
AVL, người
-đen (Red-
mỗi nút của
quá một.
gược lại có
đưa ra địn
ý do này, n
i ta đã phát
-Black Tre
a nó độ ca
ó thể khôn
h nghĩa củ
người ta gọ
t triển thêm
ee), B-Tree
2
ao
ng
ủa
ọi
m
e,

3

Một vấn đề quan trọng, như đã đề cập đến ở phần trước, là ta phải
khẳng định cây AVL có N nút phải có chiều cao khoảng log2(n).

Để đánh giá chính xác về chiều cao của cây AVL, ta xét bài toán: cây
AVL có chiều cao h sẽ phải có tối thiểu bao nhiêu nút ?

Gọi N(h) là số nút tối thiểu của cây AVL có chiều cao h.

Ta có N(0) = 0, N(1) = 1 và N(2) = 2.

Cây AVL có chiều cao h sẽ có 1 cây con AVL chiều cao h-1 và 1 cây
con AVL chiều cao h-2. Như vậy:

N(h) = 1 + N(h-1) + N(h-2) (1)

Ta lại có: N(h-1) > N(h-2)
Nên từ (1) suy ra:
N(h) > 2N(h-2)
N(h) > 2
2
N(h-4)

N(h) > 2
i
N(h-2i)
i =h/2
N(h)>2
h/2
h < 2log2(N(h))
Như vậy, cây AVL có chiều cao O(log2(n)).


Ví dụ: cây AVL tối thiểu có chiều cao h=4



2.4.

chiề
u
thể n

Xét
n


Để
k
mỗi

type
Cấu trú
c
Chỉ số c
u cao cây c

Đối với
nhận một tr

CSCB(
p

CSCB(p
CSCB(p
nút P, ta dù

P->balF
Độ cao
c
Độ cao c
khảo sát câ
nút. Lúc đ
def struct t
c dữ liệu
cân bằng củ
con phải và
một cây câ
rong ba giá
p) = 0 <=>
p) = 1 <=>
p) =-1 <=>
ùng các ký
actor = CS
cây trái P k
cây phải P
ây cân bằn
đó, cây cân
tagAVLNo
cho cây A
ủa một nút
à cây con t
ân bằng, ch

á trị sau đâ
Độ cao câ
Độ cao câ
Độ cao câ
ý hiệu sau:
SCB(P);
ký hiệu là h
ký hiệu là
ng, ta cần l
bằng có th
ode
AVL
t: Chỉ số câ
trái của nó
hỉ số cân b
ây:
ây trái (p) =
ây trái (p) <
ây trái (p) >

h
left
à h
right
lưu thêm t
hể được kh
ân bằng củ
.
bằng (CSC
= Độ cao c

< Độ cao c
> Độ cao c
thông tin v
hai báo như
ủa một nút
B) của m

ây phải (p)
ây phải (p)
cây phải (p
về chỉ số c
ư sau:
là hiệu c

ỗi nút chỉ c
)
)
)
cân bằng tạ
4
ủa
ó
ại

5
{
char balFactor; //Chỉ số cân bằng
Data key;
struct tagAVLNode* pLeft;
struct tagAVLNode* pRight;

}
AVLNode;

typedef AVLNode *AVLTree;

Để tiện cho việc trình bày, ta định nghĩa một số hăng số sau:
#define LH -1 //Cây con trái cao hơn
#define EH -0 //Hai cây con bằng nhau
#define RH 1 //Cây con phải cao hơn

2.5. Đánh giá cây AVL
Cây cân bằng là CTDL ổn định hơn CCBHT vì khi thêm, hủy làm
cây thay đổi chiều cao các trường hợp mất cân bằng mới có khả năng xảy ra.

Cây AVL với chiều cao được khống chế sẽ cho phép thực thi các thao
tác tìm, thêm, hủy với chi phí O (log2(n)) và bả
o đảm không suy biến thành
O(n).

3. CÁC THAO TÁC CƠ BẢN TRÊN CÂY AVL

Ta nhận thấy trường hợp thêm hay hủy một phần tử trên cây có thể
làm cây tăng hay giảm chiều cao, khi đó phải cân bằng lại cây.
Việc cân bằng lại một cây sẽ phải thực hiện sao cho chỉ ảnh hưởng tối
thiểu đến cây nhằm giảm thiểu chi phí cân bằng. Như đã nói ở trên, cây cân

×