Upload
luu-thao
View
54
Download
0
Embed Size (px)
Citation preview
5/17/2018 Cay Nhi Phan - slidepdf.com
http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 1/66
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
À
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
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
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
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
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
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
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
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
5/17/2018 Cay Nhi Phan - slidepdf.com
http://slidepdf.com/reader/full/cay-nhi-phan-55b07f218bc82 55/66
TÌM MAX
55
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
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
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
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
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
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
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
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
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
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
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