Giáo trình Cu trúc d liu Trường THCN Công - K Ngh Ðông Á
Trang 1
Chương V. CU TRÚC CÂY (TREE)
I. ĐỊNH NGHĨA VÀ MT S KHÁI NIM
Cây là 1 cu trúc phi tuyến, thiết lp trên 1 tp hu hn các phn t mà ta gi
là “nút”, trong đó có 1 nút đặt bit đưc gi là (noot), liên kết bi 1 quan h phân
cp, gi là quan h cha – con.
Cây có th được định nghĩa 1 cách đệ qui như sau :
1. Mt nút là 1 cây. Nút đó cũng là gc ca cây y.
2. Nếu T1, T2,…,Tk là các cây vi n1, n2 ,…,nk ln lượt là các gc ; n là 1 nút
và n có quan h cha – con vi n1, n2 ,…,nk thì lúc đó 1cây mi T s đưc to lp
vi n là gc ca nó. Nút được gi là cha ca n1, n2 ,…,nk ; ngược li n1, n2 ,…,nk
được gi là con ca n. Các cây T1, T2,…,Tk được gi là cây con (subtrees) ca n.
Người ta quy ước : 1 cây không có nút nào được gi là cây rng.
Trên hình v, người ta biu din cây vi nút gc trên và quan h cha – con
được th hin bi 1 đon thng (gia nút cha và nút con).
Ví d : Chương 1 ca go trình có cu trúc cây.
1. Gii thut
1.1. Cu trúc d liu và gii thut
1.2. Ngôn ng din đạt gii thut
1.3. Thiết kế gii thut
1.4. Đánh giá gii thut
1.4.1. Đặt vn đề
1.4.2. Thi gian thc hin trung bình
1.5. Gii thut đệ quy
1.5.1. Ví d v th tc đệ quy
1.5.2. Chú ý
Cây này có th bin din như hình 5.1
Chương1
1.
1.
1.
1.
1.4.
1.4.
1.
1.5.
1.5.
1.5.
Hình 5.1
Giáo trình Cu trúc d liu Trường THCN Công - K Ngh Ðông Á
Trang 2
Sau đây là 1 s khái nim :
a) S các con ca 1 nút đưc
gi là
cp (degree) ca 1 nút đó. Nút có cp
bng 0 gi là lá (leaf) hay nút tn
cùng (termina node). Nút không phi
là lá được gi là nút nhánh (branch
node).
Cp cao nht ca nút trên cây được
gi là cp ca cây đó. Ví d : vi cây
hình 5.2 ( đây các ch A, B,
C,…tựơng trưng cho phn thông tin
(d liu) ng vi mi nút).
A là gc ; B, C, D là con ca A ; D là cha ca G, H, I, J ; A có cp bng 3,
D có cp bng 4. Các nút như E, F, C, G, K,…. Các nút như B, D, H…là các
nút nhánh. Cây trên có cp bng 4.
b) Gc ca cây có mc (level) bng 1.
Nếu nút cha có mc là i thì nút con có mc là i + 1.
Như cây trên :
A có mc là 1 ;
B, C, D có mc là 2 ;
E, F, G, I, J có mc là 3 ;
K, L, M có mc là 4.
c) Chiu cao (height) hay chiu sâu (depth) ca 1 cây là s mc ln nht
ca nút có trên cây đó.
Cây hình 5.1 có chiu cao là 3
Cây hình 5.2 có chiu cao là 4
d) Nếu n1, n2 ,…,nk là dãy các nút mà ni là cha ca ni+1 vi 1 i k thì dãy
đó được gi là đưng đi (path) t n1 đến nk.Độ dài ca đung đi (path length)
bng s nút trên đưng đi đó tr đi 1. Ví d vi cây hình 5.2 : độ dài đường đi
t A đến L bng 3, độ dài đường đi t D ti M.
e) Nếu th t các cây con ca 1 nút được coi trng thì cây đang xét cây
th t (ordered tree), ngược li là cây không có th t (unordered tree).
f) Đối vi nút trên cây ngoài khái nim cha, con, người ta còn có th m
sang các khái nim khác theo quan h như trong gia tc. Ví d như trongnh
5.2 . A, D, H … được gi là tin bi ca L ; còn E, G, K… được gi là hu sinh
ca A…; các nút G, H, I, J là các nút anh em v.v…
A
B
C
F
G
H
I
J
E
K
L
F
Hình 5.2
Giáo trình Cu trúc d liu Trường THCN Công - K Ngh Ðông Á
Trang 3
Chú ý. Đôi lúc, để cho tin, hình v minh ho ca cây s được th hin đơn
gin : nút trên cây ch tượng trưng bng ch hoc s.
Ví d như cây hình 5.2, có th minh ho bi 5.3. Hoc cây mà mi nút
đều cha 1 s như hình 5.4.
II. CÂY NH PHÂN
1. Định nghĩa
Cây nh phân là 1 dng quan trng ca cu trúc cây.Nó có đặc đim là : mi
nút trên cây ch có ti đa là 2 con. Đối vi cây con
ca mi nút thì cũng phân bit cây con trái (left
subtree) và cây con phi (right subtree).
Như vy cây nh phân là 1 cây có th t. Ví
d : cây trên hình 5.5 là 1 cây nh phân có A là nút
gc, cây con trái ca A có gc là B, cây con phi
ca A có gc là C.
Các cây trên hình 5.6 là các cây nh phân
khác nhau.
B
D
E
C
G
H
F
Hình 5.5
Hình 5.3
Hình 5.4
A
B
C
D
E
Ì
G
H
I
J
K
L
M
14
17
2
1
9
5
3
13
4
4
39
68
Giáo trình Cu trúc d liu Trường THCN Công - K Ngh Ðông Á
Trang 4
A
B
C
E
Hình 5.7
Chng hn : cây a) khác cây b) vì vi a) E là con phi
ca D, còn vi b) thì E li là con trái ca D, cây a) khác cây
c) vì vi c) B không phi là con trái mà là con phi ca A
Nếu không để ý ti th t ca cây con thì c 4 cây nêu
trên, đều ch là 1, mà có th minh ho bi hình 5.7:
Có rt nhiu đối tượng có th biu din theo cu trúc
cây nh phân, chng hn :
Biu thc s hng vi phép
toán 2 ngôi nếu coi toán tng
vi gc, toán hng 1 ng vi cây
con trái, toán hng 2 ng vi cây
con phi, thì có th biu din bi
cây nh phân.Chng hn :
(x – 2 y) + (y / z) 3
Có th biu din như sau :
Cn chú ý ti mt s dng đặc bit ca cây nh phân tương t như hình
5.8.
Các cây như hình 5.8 a, b đựơc gi là cây suy biến (degenerate linary tree),
trên đó, C tr nút lá, các nút nhánh đều ch có 1 con.
A
B
C
E
A
B
C
D
E
A
B
C
D
E
B
C
E
a) b) c) d)
Hình 5.6
-
+
*
x
3
/
y
2
z
y
Giáo trình Cu trúc d liu Trường THCN Công - K Ngh Ðông Á
Trang 5
A
C
G
K
Hình 5.8d,e)
d)
e)
B
E
F
I
J
A
C
G
B
E
I
F
H
J
Cây hình 5.8c được gi là cây đầy đủ (full tree), trên đó tr nút lá các nút
nhánh đều có 2 con hay nói 1 cách khác : s nút mi mc trên cây đều “đầy đủ
c.
Cây hình 5.8d có s nút đầy đủ mi mc, tr mc cui cùng. Ta s gi
cây gn đầy .
Nếu cây gn đầy mà mc cui cùng các nút đều dt v phía trái, nhưy
hình 5.8e thì được gi là cây hoàn chnh.
2. Tính cht
Bây gi ta s xét ti 1 vài tính cht đặc bit ca cây nh phân, qua b đề sau
đây :
B đề:
1) S lượng ti đa ca các nút mc i trên cây nh phân là 2i-1 (i 1) .
2) S lượng ti đa ca các nút trên 1 cây nh phân có chiu cao h là 2h – 1
(h 1).
B
B
C
Hình 5.8a,b,c)
C
B
A
E
D
C
G
F
a)
b)
c)