Tải bản đầy đủ (.ppt) (22 trang)

cây nhị phân - cấu trúc dữ liệu và giải thuật

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 (320.34 KB, 22 trang )

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



×