66
 1

Cay Nhi Phan

Embed Size (px)

Citation preview

Page 1: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 1/66

 

1

Page 2: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 2/66

 

NỘI DUNG 

1. Các khái niệm 2.  Đặc điểm 

3. Hình dạng 4. Các khái niệm 5.  Định nghĩa kiểu dữ liệu 6. Các lƣu ý khi cài đặt 

7. Các thao tác

2

Page 3: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 3/66

 

CÁC KHÁI NIỆM 

Bậc  của  một nút: là số cây con

của nút đó.

Nút gốc: là nút không có nút

cha. Nút lá: là nút có bậc bằng 0.

Nút nhánh: là nút có bậc khác0 và không phải là gốc.

2

22

110

0

0

0

3

Page 4: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 4/66

 

Mức 3 

Mức 2 

Mức 1 

Mức 0 

CÁC KHÁI NIỆM (TT) Độ dài đƣờng đi  từ gốc 

đến nút x: là số nhánhcần đi qua kể từ gốc đến x.

 Độ cao của cây:  Độ dàiđƣờng đi từ gốc đến nútlá ở mức thấp nhất.

4

Page 5: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 5/66

 

 Đ ẶC  ĐIỂM CÂY NHỊ PHÂN TÌM KIẾM  Là cây nhị phân  Giá trị  của  một node bất  kỳ luôn

lớn hơn giá trị của tất cả các nodebên trái và nhỏ hơn giá trị  tất cả các node bên phải Nút có giá trị nhỏ nhất nằm ở trái

nhất của câyNút có giá trị lớn nhất nằm ở phải 

nhất của cây

7

3 36

1 6 15

 

40

234

5

Page 6: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 6/66

 

Nút

 ĐỊNH NGHĨA KIỂU DỮ LIỆU 

typedef struct TNODE

{<Data> Key;struct TNODE *pLeft, *pRight;

} *TREE;

Giá trị 

Trỏ trái  Trỏ phải 

TNODEKey

pLeft pRight

6

Page 7: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 7/66

VÍ DỤ KHAI BÁO CÂY NHỊ PHÂN BIỂU DIỄN CÁC NODE LÀ SỐ NGUYÊN 

typedef struct TNODE{

int Key;struct TNODE *pLeft, *pRight;} *TREE;

7

 

Page 8: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 8/66

CÁC LƢU Ý KHI CÀI  ĐẶT 

Bước 1: Khai báo kiễu dữ liệu biểu diễn cây 

Bước 2: Xây dựng hàm đưa dữ liệu (nhập) vào cây 

Bước 3: Xây dựng các thao tác duyệt, tìm kiếm, huỷ, … 

Các lưu ý khác: 1. Trước khi tạo node mới phải xin cấp phát vùng nhớ .

2. Trước khi tạo cây mới phải khởi tạo cây rỗng.3. Trước khi kết thúc chương trình phải huỷ cây (giải phóngvùng nhớ).

8

 

Page 9: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 9/66

C ẤU TRÚC CHƢƠNG TRÌNH 

Khai báo cấu trúc cây 

Khởi tạo cây rỗng 

Xây dựng cây 

Các thao tác

Hủy cây 

9

 

Page 10: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 10/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

10

 

Page 11: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 11/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

11

        

Page 12: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 12/66

4015461363

XÂY DỰNG CÂY 7 36 3 1 6 4 15 40

7 Nếu node cần 

thêm < node đang xét thì thêm về bên trái.

Ngược  lại thì thêmvề bên phải.

12

 

Page 13: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 13/66

XÂY DỰNG CÂY (TT)int ThemNut (TREE & t, int x)

{ if(t!=NULL){ if(x==t->Key) return 0;

else{

if(x<t->Key) ThemNut(t->pLeft, x);else ThemNut(t->pRight, x);

}}else{

t=new TNODE;if(t==NULL) return -1;t->Key=x;t->pLeft=t->pRight=NULL;return 1;

}}

13

 

Page 14: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 14/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

14

 

Page 15: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 15/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

15

 

Page 16: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 16/66

DUYỆT CÂY 

Thứ tự trƣớc (NLR)Thứ tự giữa (LNR)Thứ tự sau (LRN)

16

 

Page 17: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 17/66

NLR

7 L7 R7

7 3 L3 R3 36 L36 R367 3 1 6 L6 36 15 R15 40

7 3 1 6 4  36 15 23 40

7

3 36

1 6 15 40

234

17

 

Page 18: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 18/66

NLR

Tại node t đang xét, nếu khác rỗng thì

. In giá trị của t. Duyệt cây con bên tráicủa t theo thứ tự NLR

. Duyệt cây con bên phải của t theo thứ tự NLR

void NLR (TREE t){

if(t!=NULL)

{cout<<t->Key<<“\ t”; NLR(t->pLeft);NLR(t->pRight);

}}

18

 

Page 19: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 19/66

BÀI TẬP Bài 1

Hãy xây dựng cây nhị phân tìm kiếm theo thứ tự nhập sau: 27 19 10 21 35 25 41 12 46 7

Hãy duyệt cây trên theo thứ tự trƣớc Bài 2

Hãy xây dựng cây nhị phân tìm kiếm theo thứ tự nhập sau: H B C A E D Z M P T

Hãy duyệt cây trên theo thứ tự trƣớc 

Bài 3 Hãy xây dựng cây nhị phân tìm kiếm theo thứ tự nhập sau: 

Huế   Đà Nẵng Hà Nội  Vĩnh Long Cần  Thơ SócTrăng Nha Trang  Đồng Nai Vũng Tàu An Giang

  Tiền Giang Bình Dƣơng  Hải Dƣơng 

19

 

Page 20: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 20/66

LNR

L7 7 R7L3 3 R3 7 L36 36 R36

1 3 L6 6 7 15 R15 36 40

1 3 4 6 7 15 23 36 40

7

3 36

1 6 15 40

234

20

 

Page 21: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 21/66

LNR

Tại node t đang xét, nếukhác rỗng thì 

. Duyệt cây con bên tráicủa t theo thứ tự LNR 

. In giá trị của t 

. Duyệt cây con bên phảicủa t theo thứ tự LNR

void LNR (TREE t)

{

if(t!=NULL)

{

LNR(t->pLeft);

cout<<t->Key<<“ “; 

LNR(t->pRight);}

}21

 

Page 22: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 22/66

LRN

L7 R7 7L3 R3 3 L36 R36 36 7

1 L6 6 3 R15 15 40 36 7

1 4 6 3 23 15 40 36 7

7

3 36

1 6 15 40

234

22

 

Page 23: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 23/66

LRN

Tại node t đang xét, nếukhác rỗng thì 

. Duyệt cây con bên tráicủa t theo thứ tự LRN 

. Duyệt cây con bên phảicủa t theo thứ tự LRN

. In giá trị của t

void LRN (TREE t){

if(t!=NULL)

{

LRN(t->pLeft);

LRN(t->pRight);

cout<<t->Key<<“ “; 

}

}

23

 

Page 24: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 24/66

BÀI TẬP 

Bài 4

Hãy xây dựng cây nhị phân tìm kiếm theo thứtự nhập sau: 27 19 10 21 3 15 41 50 30 27

Hãy duyệt cây trên theo thứ tự giữa Bài 5

Hãy xây dựng cây nhị phân tìm kiếm theo thứtự nhập sau: H B C A E D T M X O

Hãy duyệt cây trên theo thứ tự sau 24

 

Page 25: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 25/66

V ẤN  ĐỀ CẦN QUAN TÂM 

Xây dựng cây từ  kết  quả  duyệt theo thứ  tự  trƣớc 

(NLR)Chọn giá trị đầu tiên làm node gốc.Lần  lƣợt  đƣa các giá trị còn lại  từ trái

sang phải vào cây theo nguyên tắc xâydựng cây.Xây dựng cây từ  kết  quả  duyệt theo thứ  tự sau(LRN)

Chọn giá trị cuối cùng làm node gốc.Lần  lƣợt  đƣa các giá trị còn lại  từ  phải sang trái vào cây theo nguyên tắc xây

dựng cây.

25

 

Page 26: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 26/66

V ẤN  ĐỀ CẦN QUAN TÂM (TT)

Xây dựng cây từ kết  quả duyệt theo thứ  tự giữa (LNR) Gọi r: Số lƣợng giá trị cho trƣớc.  Gọi m = r div 2: Giá trị ở giữa.  Chọn giá trị thứ m làm node gốc.  Lần  lƣợt đƣa các giá trị bắt đầu từ vị trí m-1 lùi

về trái vào cây theo nguyên tắc xây dựng cây.  Lần lƣợt đƣa các giá trị bắt đầu từ vị trí m+1 đến 

cuối vào cây theo nguyên tắc xây dựng cây.26

 

Page 27: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 27/66

BÀI TẬP 

Bài 6Hãy vẽ cây nhị phân tìm kiếm T biết rằng 

khi duyệt cây T theo thứ  tự Left-Right-

Node thì đƣợc dãy sau: 1, 4, 7, 5, 3, 16,18, 15, 29, 25, 30, 20, 8.

Hãy duyệt cây T trên theo thứ  tự Node-

Left-Right.Cây T có chiều cao là bao nhiêu? Tìm các

đƣờng đi từ gốc có độ dài là 4 trên cây 27

 

Page 28: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 28/66

BÀI TẬP Bài 7

Hãy vẽ cây nhị phân tìm kiếm T biết rằng khi duyệt cây T theo thứ  tự Node-Left-Right thì đƣợc dãy sau: 9, 4, 1, 3, 8, 6, 5,7, 10, 14, 12, 13, 16, 19.

Hãy duyệt cây T trên theo thứ  tự Left-Right-Node.

Liệt kê các nút lá của cây. Liệt kê các nútnhánh của cây. 28

 

Page 29: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 29/66

CÀI ĐẶT 

void Nhap(TREE &t){

int x;do{

cout<<“Nhap gia tri: “; cin>>x;int kq=ThemNut(t, x);

if(kq==0||kq==-1)break;

}while (true);

}

29

 

Page 30: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 30/66

CÀI ĐẶT 

void main(){

TREE t;

t=NULL;Nhap(t);cout<<“Duyet cay theo thu tu giua: “; 

LNR(t);

Huy(t);

}

30

 

Page 31: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 31/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

31

 

Page 32: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 32/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

32

 

Page 33: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 33/66

CHO BIẾT CÁC THÔNG TIN CỦA CÂY 

1. Số node lá (node bậc 0)2. Số node có 1 cây con (node bậc 1)3. Số node chỉ có 1 cây con phải 4. Số node có 1 cây con trái5. Số node 2 cây con (node bậc 2) 6.  Độ cao của cây 

7. Số node của cây 8. Các node trên từng mức của cây 9.  Độ dài đƣờng đi từ gốc đến node x

33

 

Page 34: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 34/66

SỐ NODE LÁ 

Nếu node t khác rỗng thì . Nếu node t có bậc 0 thì  

Trả về 1 . Ngược lại 

Trả về Số node lá cây trái t 

+ Số node lá cây phải t  Nếu node t rỗng thì

Trả về 0 

34

 

Page 35: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 35/66

SỐ NODE LÁ (TT)

int DemNutLa (TREE t){

if(t){

if(t->pLeft==NULL && t->pRight==NULL)return 1;else

return DemNutLa(t->pLeft)+DemNutLa(t->pRight);}else

return 0;}

35

 

Page 36: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 36/66

SỐ NODE CÓ 1 CÂY CON 

Nếu node t khác rỗng thì d=Số node bậc 1 của cây trái t 

+ Số node bậc 1 của cây phải t  Nếu node t có bậc 1 thì trả về d+1 Ngược lại trả về d  

Nếu node t rỗng thì

Trả về 0 

36

 

Page 37: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 37/66

SỐ NODE CÓ 1 CÂY CON 

int DemNut1Con(TREE t){

if(t){

int d=DemNut1Con(t->pLeft)+DemNut1Con(t->pRight);if((t->pLeft!=NULL&&t->pRight==NULL)

||(t->pLeft==NULL&&t->pRight!=NULL))return d+1;

elsereturn d;

}

elsereturn 0;}

37

 

Page 38: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 38/66

SỐ NODE CHỈ CÓ 1 CÂY CON PHẢI 

Nếu node t khác rỗng thì d = Số node chỉ có 1 cây con phải của cây con trái t 

+ Số node chỉ có 1 cây con phải của cây con phải t  Nếu node t chỉ có 1 cây con phải thì trả về d+1 Ngược lại trả về d  

Nếu node t rỗng thì

Trả về 0 

38

 

Page 39: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 39/66

SỐ NODE CÓ 1 CÂY CON PHẢI 

int DemNut1ConPhai(TREE t){if(t){

int d=DemNut1ConPhai(t->pLeft)+DemNut1ConPhai(t->pRight);

if(t->pLeft==NULL && t->pRight!=NULL)return d+1;else

return d;}else

return 0;}

39

 

Page 40: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 40/66

SỐ NODE CHỈ CÓ 1 CÂY CON TRÁI 

40

 

Page 41: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 41/66

SỐ NODE CÓ 2 CÂY CON 

41

 

Page 42: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 42/66

 ĐỘ CAO CỦA CÂY 

int DoCaoCay(TREE t){

if(t)

{ int t1=DoCaoCay(t->pLeft);int t2=DoCaoCay(t->pRight);return Max(t1, t2)+1;

}elsereturn 0;

}42

 

Page 43: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 43/66

SỐ NODE CỦA CÂY 

43

 

Page 44: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 44/66

CÁC NODE TRÊN TỪNG MỨC 

Mức 2: 1 6 15 40 

7

3 36

1 6 15 40

234

44

 

Page 45: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 45/66

CÁC NODE TRÊN TỪNG MỨC void InMuck(TREE t, int k, int m=0)

{if(t){

if(m==k){

printf("%d\t", t->Key);return;

}else{

m++;InMuck(t->pLeft, k,m);InMuck(t->pRight, k, m);

}}

}

45

 

Page 46: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 46/66

IN CÁC NODE CỦA TẤT CẢ MỨC 

46

 

À

Page 47: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 47/66

 ĐỘ DÀI  ĐƢỜNG  ĐI TỪ GỐC  ĐẾN NODE X 

47

 

Page 48: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 48/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

48

 

Page 49: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 49/66

CÁC THAO TÁC 

1. Xây dựng cây 

2. Duyệt cây 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

49

 

Page 50: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 50/66

TÌM KIẾM 

1. Tìm x2. Tìm min3. Tìm min của cây con bên phải 

4. Tìm max5. Tìm max của cây con bên trái 

50

 

Page 51: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 51/66

VÍ DỤ TÌM X = 23

7

3 36

1 6 15 40

234

51

 

Page 52: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 52/66

TÌM X 

TNODE * TimKiem(TREE t,int x){

if(t!=NULL){

if(t->Key==x) return t;if(x<t->Key)

return TimKiem(t->pLeft,x);else

return TimKiem (t->pRight,x);}return NULL;

}52

 

Page 53: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 53/66

TÌM MIN 

TNODE* Min(TREE t){

while(t->pLeft!=NULL){t=t->pLeft;

}return t;

}

53

 

Page 54: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 54/66

MIN CÂY CON BÊN PHẢI 

54

 

Page 55: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 55/66

TÌM MAX 

55

 

Page 56: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 56/66

TÌM MAX CÂY CON BÊN TRÁI 

56

 

Page 57: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 57/66

CÁC THAO TÁC 

1. Xây dựng cây 2. Duyệt cây

 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

57

 

Page 58: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 58/66

CÁC THAO TÁC 

1. Xây dựng cây 2. Duyệt cây

 3. Cho biết các thông tin của cây 4. Tìm kiếm 5. Xoá node trên cây

58

  

Page 59: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 59/66

XÓA NODE TRÊN CÂY 

1. Node lá2. Node có 1 cây con

3. Node có 2 cây con

7

3 36

1 6 15 40

234

59

 

Page 60: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 60/66

XÓA NODE LÁ 

Xóa 1Xóa 23

7

3 36

1 6 15 40

234

60

  

Page 61: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 61/66

XÓA NODE 1 CÂY CON 

Xóa 6Xóa 15

7

3 36

1 6 15 40

234

4 23

61

  

Page 62: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 62/66

XÓA NODE 2 CÂY CON 

Tìm node thế mạng Cách 1: Tìm node trái nhất 

của cây con phải 

Cách 2: Tìm node phải nhất của cây con trái

Xóa 36 (Cách 2)

7

3 36

1 6 15 40

234

16

23

62

 

Page 63: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 63/66

TÌM NODE THẾ MẠNG 

void TimTheMang (TREE &pHuy,TREE & q){

if(q->pLeft)TimTheMang(pHuy, q->pLeft);

else{

pHuy->Key=q->Key;pHuy=q;

q=q->pRight;}

}63

 

Page 64: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 64/66

XÓA MỘT NODE CÓ GIÁ TRỊ X void HuyNut (TREE & t, int x)

{ if(t!=NULL){ if(x<t->Key) HuyNut(t->pLeft,x);

else{if(x>t->Key) HuyNut(t->pRight,x);else{

TNODE * pHuy=t;if(t->pLeft==NULL) t=t->pRight;else

if(t->pRight==NULL) t=t->pLeft;else TimTheMang(pHuy,t->pRight);

delete pHuy;

}}

}}

64

 

Page 65: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 65/66

HUỶ TOÀN BỘ CÂY 

Nếu node khác rỗng Hủy cây bên trái t Hủy cây bên phải t Hủy node t 

65

 

Cho dãy số theo thứ tự nhập từ trái sang

Page 66: Cay Nhi Phan

5/17/2018 Cay Nhi Phan - slidepdf.com

http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 66/66

y ự ập gphải nhƣ sau: 20 15 35 3011 13 17 36 47 16 38 28 14 Hãy vẽ cây nhị phân tìm kiếm cho dãy số

trên.

Hãy cho biết kết quả duyệt cây trên theothứ tự trƣớc, giữa và sau. Cho biết độ cao của cây, các nút lá, các

nút có bậc 2. Vẽ lại cây sau khi thêm nút: 25 và 91 Trình bày từng bƣớc và vẽ lại cây sau khi66