Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
NỘIMaster
DUNGTitle Style
Click To Edit
CÂY VÀ CÂY NHỊ PHÂN
1
Định
Nghĩa
Click
ToCây
Edit
Master Title Style
Cây là một tập hợp T các phần tử (gọi là
nút của cây), trong đó có một nút đặc
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
biệt gọi là nút gốc, các nút còn lại
được chia thành những tập rời nhau T 1,
T2, …,Tn theo quan hệ phân cấp, trong đó
Ti cũng là 1 cây. Mỗi nút ở cấp i sẽ
quản lý một số nút ở cấp i+1. Quan hệ
này người ta gọi là quan hệ cha – con.
2
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
MộtClick
Số Khái
ToNiệm
Edit
• Bậc
nút
• Bậc
các
• Nút
• Nút
• Mức
Master Title Style
của một nút: là số cây con của
đó .
của một cây: là bậc lớn nhất của
nút trong cây
gốc: là nút không có nút cha.
lá: là nút có bậc bằng 0 .
của một nút:
– Mức (gốc (T) ) = 0.
– Gọi T1, T2, T3, ... , Tn là các cây con của T0 :
Mức (T1) = Mức (T2) = . . . = Mức (Tn) = Mức (T0) +
1.
• Độ dài đường đi từ gốc đến nút x: là
số nhánh cần đi qua kể từ gốc đến x.
3
Ví Dụ
1 TổTo
Chức
Cây
Click
EditDạng
Master
Title Style
BB-Electronic Corp.
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
R&D
Kinh doanh
Nội đòa
Quốc tế
Châu âu
Mỹ
Tài vụ
TV
Sản xuất
CD
Amplier
Các nước
4
CâyClick
Nhị Phân
To Edit
Master Title Style
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
• Mỗi nút có tối đa 2 cây con
Caây
con
traùi
Caây
con
phaûi
5
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
CấuClick
Trúc Dữ
Cây Nhị
Phân
To Liệu
EditCủa
Master
Title
Style
typedef struct
tagTNode
{
Data Key;
struct tagTNode
*pLeft; struct
tagTNode *pRight;
}TNode;
Key
typedef TNode *TREE;
6
VD: Click
Cây Được
Chức
Trong Bộ
NhớStyle
Trong
To Tổ
Edit
Master
Title
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
1f
2f
2f
N
4
6
3f
3f
7f
5f
5f
N
5
N
7f
N
8
9
N
N
7
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
Duyệt
CâyTo
NhịEdit
PhânMaster
Click
Title Style
Có 3 trình tự thăm gốc :
Duyệt trước
Duyệt giữa
Duyệt sau
Độ phức tạp O (log2(h))
Trong đó h là chiều cao cây
8
Ví Dụ
Kết To
QuảEdit
CủaMaster
Phép Duyệt
Click
TitleCây
Style
9
8
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
2
1
6
5
7
10
3
12
4
• NLR: 9, 2, 6, 1, 10, 8, 5, 3, 7, 12, 4.
• LNR: 6, 2, 10, 1, 9, 3, 5, 8, 12, 7, 4.
• Kết quả của phép duyệt : LRN, NRL,LRN, LNR?
9
Duyệt
Trước
Click
To Edit
Master Title Style
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
void NLR(TREE Root)
{
if (Root != NULL)
{
<Xử lý Root>; //Xử lý tương ứng theo
nhu cầu
NLR(Root->pLeft);
NLR(Root->pRight);
}
}
Kiểu duyệt này trước tiên thăm nút gốc sau đó thăm
các nút của cây con trái rồi đến cây con phải .
10
Duyệt
trước (Node-Left-Right)
Clicktheo
To thứ
Edittự Master
Title Style
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
• Một ví dụ: đọc một quyển sách hay bài báo từ
đầu đến cuối như minh họa trong hình bên
dưới:
11
VD
Click To Edit Master
Title Style
A
B
C
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
D
E
H
I
N
J
F
G
K
O
L
M
P
Kết quả: A B D H I N E J O K C F L P G M
12
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
Duyệt
Giữa
Click
To Edit
Master Title Style
void LNR(TREE Root)
{
if (Root != NULL)
{
LNR(Root->pLeft);
<Xử lý Root>; // Xử lý tương ứng theo nhu
cầu
LNR(Root->pRight);
}
}
Kiểu duyệt này trước tiên thăm các nút
của cây con trái sau đó thăm nút gốc rồi
đến cây con phải.
13
Duyệt
theo
tự Master
giữa (LeftNode-Right)
Click
Tothứ
Edit
Title
Style
A
B
C
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
D
E
H
I
N
J
F
G
K
O
L
M
P
Kết quả: H D N I B J O E K A F P L C M G
14
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
Duyệt
SauTo Edit
Click
Master Title Style
void LRN(TREE Root)
{
if (Root != NULL)
{
LRN(Root->pLeft);
LRN(Root->pRight);
<Xử lý Root>; // Xử lý tương ứng theo nhu
cầu
}
}
Kiểu duyệt này trước tiên thăm các nút của
cây con trái sau đó thăm đến cây con phải
rồi cuối cùng mới thăm nút gốc.
15
Duyệt
sau (Left-Right-Node)
Clicktheo
To thứ
EdittựMaster
Title Style
A
B
C
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
D
E
H
I
N
J
F
G
K
O
L
M
P
Kết quả: H N I D O J K E B P L F M G C A
16
Duyệt theo
thứ tựMaster
sau (Left-Right-Node)
Click
To Edit
Title Style
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
• Tính toán giá trị của biểu thức dựa trên
cây biểu thức
(3 + 1)×3/(9 – 5 + 2) – (3×(7 – 4) + 6) = –13
17
BiểuClick
Diễn Cây
Bằng Title
Cây Nhị
Phân
To Tổng
EditQuát
Master
Style
A
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
B
E
A
C
H
F
B
E
F
C
G
H
D
I
G
J
D
I
J
18
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
Nhược To
điểmEdit
của các
cấu trúcTitle
cây tổng
quát
Click
Master
Style
• Bậc của các nút trên cây có thể dao
động trong một biên độ lớn => việc
biểu diễn gặp nhiều khó khăn và
lãng phí
• Việc xây dựng các thao tác trên cây
tổng quát phức tạp hơn trên cây nhị
phân nhiều
• Vì vậy, thường nếu không quá cần
thiết phải sử dụng cây tổng quát,
người ta chuyển cây tổng quát thành
cây nhị phân.
19
QuiMaster
tắc
Click To Edit
Title Style
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
• Ta có thể biến đổi một cây bất
kỳ thành cây nhị phân theo
nguyên tắc sau:
– Giữ lại nút con trái nhất làm nút con trái
– Các nút con còn lại chuyển thành nút con
phải
– Như vậy trong cây nhị phân mới thì con
trái thể hiện quan hệ cha con và con phải
thể hiện quan hệ anh em trong cây tổng
quát ban đầu
20
Một
cách
diễnMaster
cây nhị phân
Click
Tobiểu
Edit
Titlekhác
Style
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Cấu trúc dữ liệu 1 vá thuật giải
• Đôi khi, khi định nghĩa cây nhị
phân, người ta quan tâm đến cả quan
hệ 2 chiều cha con chứ không chỉ
một chiều như định nghĩa ở phần
trên.
• typedef struct tagTNode
{
DataType
Key;
struct tagTNode*
pParent;
struct tagTNode*
pLeft;
struct tagTNode*
pRight;
}TNODE;
typedef TNODE
*TREE;
21
Cấu trúc dữ liệu 1 vá thuật giải
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Một
cách
diễnMaster
cây nhị phân
Click
Tobiểu
Edit
Titlekhác
Style
22