You are on page 1of 61

CÂY

Bùi Tiến Lên

09/12/2013

Fall 2013 Graph Theory 1 / 43


Các Khái Niệm Cơ Bản

Định nghĩa 1 a
I Cây (Tree) là đồ thị liên
b c d
thông và không có chu trình
I Rừng (Forest) là đồ thị e f
không có chu trình (a) dạng cây
a g

b c d h i

e f j k
(b) dạng rừng
Hình 1: Các đồ thị dạng cây & rừng

Fall 2013 Graph Theory 2 / 43


Các Khái Niệm Cơ Bản (cont.)
Từ định nghĩa ta có những nhận xét sau
Nhận xét
I Một đồ thị dạng cây sẽ không có cạnh khuyên và không có
cạnh song song
I Một đồ thị dạng rừng sẽ có p thành phần liên thông và mỗi
thành phần liên thông là một đồ thị dạng cây

Fall 2013 Graph Theory 3 / 43


Định lý về sự tồn tại đỉnh treo

Định lý 1
Nếu một cây có n đỉnh với n ≥ 2 thì cây chứa ít nhất hai đỉnh treo

Chứng minh
I Cho cây T = (V , E ), xét cạnh (a, b) ∈ E
I Gọi P = u...a...b...v là đường đi sơ cấp dài nhất trên cây T
chứa cạnh (a, b)
I Ta nhận thấy u và v phải là 2 đỉnh treo

Fall 2013 Graph Theory 4 / 43


Các định nghĩa về cây
Cho một đồ thị G có n đỉnh, các phát biểu sau là tương đương

Định lý 2 (daisy chain)


1. Đồ thị G là cây.
2. Giữa hai đỉnh bất kỳ của đồ thị G, tồn tại duy nhất một dây
chuyền nối chúng.
3. Đồ thị G liên thông tối thiểu (nghĩa là G liên thông và nếu xóa
đi bất kỳ cạnh nào của nó thì nó không còn liên thông nữa).
4. Thêm một cạnh nối 2 đỉnh bất kỳ của G thì đồ thị sẽ chứa
một chu trình duy nhất.
5. Đồ thị G liên thông và có n−1 cạnh.
6. Đồ thị G không có chu trình và có n−1 cạnh.

Fall 2013 Graph Theory 5 / 43


Các định nghĩa về cây (cont.)
Từ các định nghĩa tương đương về cây ta có những nhận xét sau
về đồ thị n đỉnh
Nhận xét
I Cây là một cấu trúc tiết kiệm cạnh nhất nhưng vẫn đảm bảo
sự liên thông
I Cây là một cấu trúc không bền vững vì tính liên thông sẽ bị
mất khi bỏ đi bất cứ một cạnh nào

Fall 2013 Graph Theory 6 / 43


Cây khung

Định nghĩa 2
Cho một đồ thị G = (V , E ) liên thông và T = (V , F ) là đồ thị bộ
phận của G. Nếu T là cây thì nó được gọi là cây khung
(spanning tree) của đồ thị G.

Fall 2013 Graph Theory 7 / 43


Định lý về sự liên thông & cây khung

Định lý 3
Một đồ thị liên thông nếu và chỉ nếu nó có cây khung

Chứng minh
I (⇐) Đồ thị G có cây khung T thì đồ thị G liên thông. Điều
này suy ra tự định nghĩa về cây và cây khung
I (⇒) Đồ thị G liên thông thì đồ thị G có cây khung T
I Nếu đồ thị G có một chu trình C thì loại bỏ một cạnh của chu
trình để tạo ra đồ thị con G 0 . Đồ thị G 0 là một đồ thị liên
thông
I Tiếp tục quá trình loại bỏ cạnh cho đến khi không thể làm
được thì sẽ được đồ thị con T không có chu trình. Đồ thị T là
cây khung

Fall 2013 Graph Theory 8 / 43


Thuật toán tìm cây khung
Cho đồ thị G = (VG , EG ) là một đồ thị liên thông có n đỉnh. Xác
định cây khung T = (VT , ET ) của đồ thị G.
I Bước 1: Chọn tùy ý đỉnh v ∈ VG và khởi tạo VT = {v} và
ET = ∅
I Bước 2: Tìm đỉnh y ∈ VG \VT sao cho kề với một đỉnh
x ∈ VT . Nếu không tìm thấy thì DỪNG (1)
I Bước 3: Thực hiện thêm đỉnh và thêm cạnh VT = VT + {y}
và ET = ET + {e = (x, y)}
I Bước 4: Nếu T có đủ n đỉnh thì DỪNG (2) ngược lại tiếp tục
quay lại bước 2

Fall 2013 Graph Theory 9 / 43


Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g

e
d

b
c
Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g
b (a,b)
a

e
d

b
c
Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g
b (a,b)
a
d (a,d)
e
d

b
c
Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g
b (a,b)
a
d (a,d)
g (a,g) e
d

b
c
Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g
b (a,b)
a
d (a,d)
g (a,g) e
c (b,c) d

b
c
Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g
b (a,b)
a
d (a,d)
g (a,g) e
c (b,c) d
e (c,e)

b
c
Minh họa thuật toán tìm cây khung
Cho đồ thị G dưới và đỉnh bắt đầu là a. Cây khung T = (VT , ET )
được tìm như sau

Bảng 1: Bảng tính toán Hình 2: Đồ thị G và cây khung

Thêm vào VT Thêm vào ET f


a ∅ g
b (a,b)
a
d (a,d)
g (a,g) e
c (b,c) d
e (c,e)
f (e,f)
b
c

Fall 2013 Graph Theory 10 / 43


Cây khung có trọng số nhỏ nhất & lớn nhất

Định nghĩa 3
Cho một đồ thị có trọng số G = (V , E , L) và T là tập các cây
khung của G
I Đồ thị T ∈ T được gọi là cây khung có trọng số nhỏ nhất
(minimum spanning tree) nếu trọng số của nó nhỏ nhất

T = arg min(L(T )) (1)


T ∈T

I Đồ thị T ∈ T được gọi là cây khung có trọng số nhỏ nhất


(maximum spanning tree) nếu trọng số của nó lớn nhất

T = arg max(L(T )) (2)


T ∈T

Fall 2013 Graph Theory 11 / 43


Ứng dụng cây khung có trọng số nhỏ nhất

I Bài toán xây dựng đường cao tốc


I Bài toán xây dựng hệ thống mạng máy tính

Fall 2013 Graph Theory 12 / 43


Thuật toán tìm cây khung nhỏ nhất
Hai thuật toán Prim và Kruskal là những thuật toán thông dụng
để tìm cây khung nhỏ nhất

Fall 2013 Graph Theory 13 / 43


Thuật toán Prim
Cho đồ thị G = (VG , EG , LG ) là một đồ thị liên thông có n đỉnh.
Xác định cây khung T = (VT , ET ) của đồ thị G.
I Bước 1: Chọn tùy ý đỉnh v ∈ VG và khởi tạo VT = {v} và
ET = ∅
I Bước 2: Trong số những cạnh e = (x, y) với y ∈ VG \VT chọn
cạnh e có trọng số nhỏ nhất. Nếu không tìm thấy thì DỪNG
(1)
I Bước 3: Thực hiện thêm đỉnh và thêm cạnh VT = VT + {y}
và ET = ET + {e}
I Bước 4: Nếu T có đủ n đỉnh thì DỪNG (2) ngược lại tiếp tục
quay lại bước 2

Fall 2013 Graph Theory 14 / 43


Thuật toán Prim (cont.)
Định lý 4
Thuật toán Prim là đúng đắn

Chứng minh
Sinh viên tự chứng minh

Fall 2013 Graph Theory 15 / 43


Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
6
a 17
4
2
3
e
8
9 d

4 5
1
b 8 c
Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
d (a,d)
6
a 17
4
2
3
e
8
9 d

4 5
1
b 8 c
Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
d (a,d)
6
c (d,c) 17
a 4
2
3
e
8
9 d

4 5
1
b 8 c
Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
d (a,d)
6
c (d,c) 17
a 4
g (d,g) 2
3
e
8
9 d

4 5
1
b 8 c
Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
d (a,d)
6
c (d,c) 17
a 4
g (d,g) 2
b (d,b) 3
e
8
9 d

4 5
1
b 8 c
Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
d (a,d)
6
c (d,c) 17
a 4
g (d,g) 2
b (d,b) 3
e
e (g,e) 8
9 d

4 5
1
b 8 c
Minh họa thuật toán Prim
Cho đồ thị có trọng số G dưới và đỉnh bắt đầu là a. Cây khung
nhỏ nhất T = (VT , ET ) được tìm như sau

Bảng 2: Bảng tính toán Hình 3: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
a ∅ 12
f
g
d (a,d)
6
c (d,c) 17
a 4
g (d,g) 2
b (d,b) 3
e
e (g,e) 8
9 d
f (g,f) 5
4 1
b 8 c
Fall 2013 Graph Theory 16 / 43
Thuật toán Kruskal
Cho đồ thị G = (VG , EG , LG ) là một đồ thị liên thông có n đỉnh.
Xác định cây khung T = (VT , ET ) của đồ thị G.
I Bước 1: Sắp xếp các cạnh trong EG theo trọng số tăng dần
thành một danh sách L.
I Bước 2: Khởi tạo VT = ∅ và ET = ∅
I Bước 3: Lần lượt duyệt từng cạnh e = (x, y) trong danh sách
L. Nếu đồ thị T cùng với cạnh e không chứa chu trình thì
loại cạnh e ra khỏi danh sách L và thực hiện
VT = VT + {x, y} và ET = ET + {e}
I Bước 4: Nếu T có đủ n − 1 cạnh thì dừng lại ngược lại quay
lại bước 2

Fall 2013 Graph Theory 17 / 43


Thuật toán Kruskal (cont.)
Định lý 5
Thuật toán Kruskal là đúng đắn

Chứng minh
Sinh viên tự chứng minh

Fall 2013 Graph Theory 18 / 43


Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(c,d),(d,g),(a,d),(b,d),(e,g),(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
6
a 4 17
2
3
e
8
9 d
4 5
1
b 8 c
Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(d,g),(a,d),(b,d),(e,g),(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
{c, d} (c,d) 6
a 4 17
2
3
e
8
9 d
4 5
1
b 8 c
Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(a,d),(b,d),(e,g),(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
{c, d} (c,d) 6
{d, g} (d,g) a 4 17
2
3
e
8
9 d
4 5
1
b 8 c
Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(b,d),(e,g),(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
{c, d} (c,d) 6
{d, g} (d,g) a 4 17
2
{a, d} (a,d) 3
e
8
9 d
4 5
1
b 8 c
Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(e,g),(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
{c, d} (c,d) 6
{d, g} (d,g) a 4 17
2
{a, d} (a,d) 3
e
{b, d} (b,d) 8
9 d
4 5
1
b 8 c
Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(c,e),(a,g),(b,c),(d,e),(a,b),(f,g),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
{c, d} (c,d) 6
{d, g} (d,g) a 4 17
2
{a, d} (a,d) 3
e
{b, d} (b,d) 8
9 d
{e, g} (e,g)
4 5
1
b 8 c
Minh họa thuật toán Kruskal
Cho đồ thị có trọng số G dưới. Danh sách cạnh L
(c,e),(a,g),(b,c),(d,e),(a,b),(e,f)

Bảng 3: Bảng tính toán Hình 4: Đồ thị G và cây khung nhỏ


nhất
Thêm vào VT Thêm vào ET
∅ ∅ 12 f
g
{c, d} (c,d) 6
{d, g} (d,g) a 4 17
2
{a, d} (a,d) 3
e
{b, d} (b,d) 8
9 d
{e, g} (e,g)
4 5
{f , g} (f,g) 1
b 8 c

Fall 2013 Graph Theory 19 / 43


Cây có hướng

Định nghĩa 4
Cho đồ thị có hướng G = (V , E ), đồ thị G được gọi là cây có
hướng nếu nó thỏa mãn hai điều kiện sau:
1. G không có chu trình
2. G có gốc

Fall 2013 Graph Theory 20 / 43


Các định nghĩa tương đương về cây có hướng

Định nghĩa 5
Cho một đồ thị có hướng G = (V , E ) gồm n đỉnh. Các phát biểu
sau là tương đương
1. Đồ thị G là một cây có hướng
2. Đồ thị G có một đỉnh r và từ r tồn tại một đường đi duy nhất
đến các đỉnh còn lại
3. Đồ thị G tựa liên thông mạnh tối tiểu (tức là nếu xóa bớt bất
kỳ một cạnh nào thì G sẽ không còn tựa liên thông mạnh)
4. Đồ thị G liên thông và có đỉnh r sao cho d − (r ) = 0 và
d − (v) = 1 với mọi v 6= r
5. Đồ thị G không có chu trình và có đỉnh r sao cho d − (r ) = 0
và d − (v) = 1 với mọi v 6= r

Fall 2013 Graph Theory 21 / 43


Sự tồn tại cây có hướng

Định lý 6
Cho G là một đồ thị có hướng
I Nếu G chứa một đồ thị bộ phận là cây T có hướng thì G tựa
liên thông mạnh.
I Nếu G tựa liên thông mạnh thì G có chứa một đồ thị bộ phận
T là cây có hướng

Fall 2013 Graph Theory 22 / 43


Ứng dụng của cây
Cấu trúc cây thể hiện tính ”phân cấp”, ”kế thừa” do đó có thể
biểu diễn được những cấu trúc như
I Cây gia phả (trong các dòng họ)
I Cây phân cấp các loài (trong sinh học)
I Cây thư mục (trong máy tính)

Fall 2013 Graph Theory 23 / 43


Ứng dụng của cây (cont.)
I Quản lý hành chính phân cấp toàn thế giới

Trái đất

Việt Nam Mỹ Trung Quốc

TPHCM Hà Nội

Quận Tân Bình Quận 1

Ông Lên Ông Dũng


Hình 5: Quản lý hành chính toàn cầu

Fall 2013 Graph Theory 24 / 43


Ứng dụng của cây (cont.)
I Biểu thức toán học có thể được biểu diễn bằng cây. Ví dụ cây
dưới đây dùng để biểu diễn biểu thức

(a + b) ∗ (c − d)

+ -

a b c d

Hình 6: Cây biểu thức

Fall 2013 Graph Theory 25 / 43


Ứng dụng của cây (cont.)
I Các nhà ngôn ngữ học thường dùng cây ngữ pháp để biểu
diễn cấu trúc ngữ pháp của một câu. Ví dụ sau đây dùng để
biểu diễn câu ”the cat sat on the mat”

NP VP

Det N V PP

the cat sat P NP

on Det N

the mat

Hình 7: Cây ngữ pháp

Fall 2013 Graph Theory 26 / 43


Cấu trúc dữ liệu cây

Định nghĩa 6
I Cây (Tree) T gồm một tập hợp n đỉnh - nút (node)
{p1 , p2 , ..., pn }
I Trong đó một nút duy nhất là nút gốc pr ; nghĩa là có đường
đi đến tất cả các đỉnh còn lại
I Các nút còn lại được chia thành m tập hợp không giao nhau
{T1 , T2 , ..., Tm } và mỗi tập này lại là cây con (child tree)
I Nếu n = 0 thì cây T là cây rỗng (null tree)

Fall 2013 Graph Theory 27 / 43


Các thuật ngữ liên quan đến cây

I Nút (node): là những phần tử trong cây

E F

G H C D

I J

Hình 8: Cây có các nút {A, B, C, D, E, F, G, H, J}

Fall 2013 Graph Theory 28 / 43


Các thuật ngữ liên quan đến cây (cont.)
I Nhánh (branch): là cạnh mũi tên nối giữa hai nút trong cây
I Nút cha (parent node) và nút con (child node) là hai quan
hệ được định nghĩa trên một cạnh, nút cha là nút đầu cạnh và
nút con là nút cuối cạnh

E F

G H C D

I J

Hình 9: Nút E là nút cha của H, nút H là nút con của E

Fall 2013 Graph Theory 29 / 43


Các thuật ngữ liên quan đến cây (cont.)

I Nút gốc (root node): là


A
nút không có cha
I Nút lá (leaf node): là nút E F
không có con
I Nút nội (internal node): là G H C D
nút có cha và có con
I Nút anh em (sibling node): I J
là những nút có cùng cha Hình 10: Nút A là nút gốc; nút G, I,
J, C, D là nút lá; nút E, H, F là nút
nội; nút G và H là anh em

Fall 2013 Graph Theory 30 / 43


Các thuật ngữ liên quan đến cây (cont.)
I Bậc của nút (node degree): là tổng số nút con của nút này

A 2

E 3 F 2

G 0 K 0 H 2 C 0 D 0

I 0 J 0

Hình 11: Cây và bậc của các nút

Fall 2013 Graph Theory 31 / 43


Các thuật ngữ liên quan đến cây (cont.)
I Bậc của cây (tree degree): là bậc lớn nhất của các nút của
cây

deg (T ) = max (deg (pi ) , pi ∈ T ) (3)

A 2

E 3 F 2

G 0 K 0 H 2 C 0 D 0

I 0 J 0

Hình 12: Bậc của cây là 3

Fall 2013 Graph Theory 32 / 43


Các thuật ngữ liên quan đến cây (cont.)
I Mức của nút (node level):

p = root

0
level (p) = (4)
level (parent (p)) + 1 p =
6 root

A 0

E 1 F 1

G 2 K 2 H 2 C 2 D 2

I 3 J 3

Hình 13: Cây và mức của các nút

Fall 2013 Graph Theory 33 / 43


Các thuật ngữ liên quan đến cây (cont.)
I Chiều cao của cây (tree height):

height (T ) = max (level (pi ) , pi ∈ T ) (5)

A 0

E 1 F 1

G 2 K 2 H 2 C 2 D 2

I 3 J 3

Hình 14: Chiều cao của cây là 3

Fall 2013 Graph Theory 34 / 43


Các thuật ngữ liên quan đến cây (cont.)
I Đường đi (path): là một chuỗi các nút khác nhau
{p1 , p2 , ..., pk } sao cho giữa pi , pi+1 có cạnh giữa chúng. Nút
p1 gọi nút đầu và pk là nút cuối của đường đi.

E F

G K H C D

I J

Hình 15: Dãy {A, E, H, I} là đường đi, dãy {A, E, C} không phải là
đường đi

Fall 2013 Graph Theory 35 / 43


Phân Loại Cây

Định nghĩa 7
I Cây tuyến tính (linear tree): là cây có bậc bằng 1
I Cây nhị phân (binary tree): là cây có bậc bằng 2
I Cây tam phân (ternary tree): là cây có bậc bằng 3
I Cây m-nhánh (m-way tree): là cây có bậc bằng m

Hình 16: Các loại cây

Fall 2013 Graph Theory 36 / 43


Một số loại cây nhị phân

Định nghĩa 8
Một số cây nhị phân đặc biệt
I Cây nhị phân đầy đủ (full binary tree): là cây mà mỗi nút có
0 hoặc 2 nút con
I Cây nhị phân hoàn chỉnh (complete binary tree): là cây mà

1. Đầy đủ các nút từ mức 0 đến h − 1 (h là chiều cao của cây)
2. Riêng mức h thì các nút liên tiếp từ trái sang phải

Fall 2013 Graph Theory 37 / 43


Một số loại cây nhị phân (cont.)
Hình dưới minh họa cây đầy đủ và cây hoàn chỉnh.

Hình 17: Các loại cây đầy đủ và hoàn chỉnh

Fall 2013 Graph Theory 38 / 43


Các Định Lý Về Cây Nhị Phân

Định lý 7
1. Nếu T là cây nhị phân có chiều cao là h thì số nút tối đa của
cây là 2h − 1
2. Nếu T là cây nhị phân có chiều cao là h thì số nút lá tối đa
của cây là 2h−1
3. Nếu T là cây nhị phân thì sẽ không có quá 2k nút có mức
k≥0
4. Nếu T là một cây nhị phân có n nút thì chiều cao nhỏ nhất
có thể của cây là là log2 (n + 1)

Fall 2013 Graph Theory 39 / 43


Các Định Lý Về Cây Nhị Phân (cont.)
Định lý 8
Cho T là một cây nhị phân đầy đủ. Gọi n là số nút, l là số nút lá
và i là số nút nội (tính cả gốc)

l =i +1
n = 2i + 1
i = n−1
2 (6)
l = n+1
2
n = 2l − 1
i =l −1

Fall 2013 Graph Theory 40 / 43


Duyệt cây nhị phân
Có thể sử dụng thuật toán duyệt tổng quát như DFS hay BFS.
Ngoài ra có thể sử dụng những kỹ thuật duyệt đặc thù cho cây nhị
phân như
I Duyệt các nút của cây theo thứ tự NLR; nghĩa là duyệt nút
trước (N), sau đó duyệt cây con trái (L), cuối cùng duyệt cây
con phải (R)
I Duyệt các nút của cây theo thứ tự LNR
I Duyệt các nút của cây theo thứ tự LRN

Fall 2013 Graph Theory 41 / 43


Duyệt cây nhị phân (cont.)
N 1 N 2 N 3

L 2 R 3 L 1 R 3 L 1 R 2

(a) NLR (b) LNR (c) LRN


Hình 18: Ba kiểu duyệt đặc thù của cây

Fall 2013 Graph Theory 42 / 43


Tài Liệu Tham Khảo

Fall 2013 Graph Theory 43 / 43

You might also like