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

ĐỀ TÀI BÁO CÁO CÂY NHỊ PHÂN

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 (191.73 KB, 28 trang )


TRƯỜNG ĐẠI HỌC SƯ PHẠM TPHCM
Khoa Toán – Tin

ĐỀ TÀI BÁO CÁO
CÂY NHỊ PHÂN
Lê Thị Thu Hà
Nguyễn Thị Yến
Nguyễn Thị Hồng Loan

CÁC KHÁI NIỆM VỀ CÂY
1)Cây:
a- Khái niệm :là đồ thị vô hướng không có chu trình.
b-Cây có gốc :là cây có hướng ,có đỉnh ,có đường đi tới mọi
đỉnh khác.
2)Cây nhị phân-cây nhị phân tìm kiếm
a- Cây nhị phân :là cây mà tại mỗi nút có tối đa 2 con.
b- Cây nhị phân tìm kiếm :là cây nhị phân mà giá trị của
những nút bên trái nhỏ hơn giá trị của những nút bên phải.

TÀI LIỆU THAM KHẢO

Nhập môn cấu trúc dữ liệu và giải thuật

Web:http//:cplusplus.com

MỘT SỐ KHÁI NIỆM CƠ BẢN
1) Bậc của một nút :là số cây con của nút đo.
2) Bậc của một cây :là bậc lớn nhất của các nút trong
cây(số cây con tối đa của một nút thuộc cây).Cây có bậc n
thì gọi là cây n-phân.


3) Nút gốc :là nút không có nút cha.
4) Nút lá :là nút có bậc bằng 0.
5) Nút nhánh :là nút có bậc khác 0 và không phải là gốc.
6) Mức của một nút:
-Mức(gốc (T))=0.
- Gọi T
1
,T
2
,…,T
n
là các cây con của T.
Mức(T
1
)=Mức(T
2
)=…=Mức(T
n
)=Mức(Tn)+1

MỘT SỐ ỨNG DỤNG CỦA CÂY
Tính giá trị của biểu thức
(12*5)+[4*(7+2)]
+
*
*
+
12
5
7 2

4

Sơ đồ tổ chức của một công ty
BB-Electronic Corp
R & D Kinh Doanh Tài vụ Sản xuất
Nôi địa
Các nướcChâu Âu Mỹ
Quốc tế TV CD Amplier

Tổ chức cây thư mục trong Windows

Tổ chức cây thư mục trong MS-DOS

NỘI DUNG TRÌNH BÀY
1)Nhập và xuất cây.
2)Duyệt cây.
3)Thêm,xóa và hủy cây.
4)Xử lí nút lá.
5)Tìm chiều cao của cây.

CHI TIẾT TỪNG HÀM

NHẬP CÂY
1) Khởi tạo :sử dụng hàm init_tree
2) Chèn nút :sử dụng hàm insert

XUẤT CÂY
1)Ý tưởng :duyệt cây theo từng tầng
2)Mã giả:
Function xem_tungtang

{
tầng =1 //xuất gốc
tầng >1
tầng //trả về tầng trên của tầng đó
xuất con trái
xuất con phải
}

VÍ DỤ MINH HỌA
Tầng 1
Tầng 2
Tầng 3
5
96
4
3
2
8

DUYỆT CÂY NHỊ PHÂN
1)Duyệt cây tiền thứ tự (NLR).
2)Duyệt cây trung thứ tự (LNR).
3)Duyệt cây hậu thứ tự (LRN).

THÊM,XÓA ,HỦY CÂY
1) Thêm nút
2) Hủy cây (lưu ý:sau khi hủy phải khởi tạo ).
3) Xóa một nút có giá trị x

3.1- XÓA X KHÔNG LÀ NÚT GỐC

-Gọi p là nút cần xóa.
-Gọi q là nút cha của p.
-
Gọi t là cờ lưu hướng của p đối với q.
+ t=0: p nằm bên trái q.
+t=1: p nằm bên phải q.
Xét t=0 (t=1 tương tự)

a) P không có con trái (p->pl=NULL)
q->pl =p->pr;
Delete p;
3
1
2NULL
NULL NULL
p
q

b) P không có con phải(p->pr=NULL)
q->pl=p->pr;
delete p;
3
1
0
NULL NULL
p
q

c) P có con trái và con phải
-Gọi p1 là phần tử có giá trị lớn nhất của

cây con bên trái p
p->Info=p
1
->Info;
-Gọi q1 là cha của p1
+q
1
!=p: q
1
->pr=p
1
->pl;
delete p
1
;
+q
1
= p:p->pl=p
1
->pl
delete p
1

7
5
6
2
3
4
NULL NULL

q
p
q1
p1

3.2- Xóa p là nút gốc
T không có con trái và con phải
Delete T;
T=NULL;
6
NULL NULL
T

T có con trái =NULL
Node * q=T;
T=T->pr;
Delete q;

6
7
NULL
NULL
NULL
T

T có con phải =NULL
Node *q=T;
T=T->pl;
Delete q;
6

5 NULL
NULL NULL
T


T có con phải và con trái:sử dụng lại hàm xóa nút có 2
con trái và con phải.

XỬ LÍ NÚT LÁ
1)Ý tưởng :duyệt cây con trái và phải cho đến khi chúng bằng
NULL thì xuất giá trị và kết thúc.
2)Mã giả:
Function lietkela
{
if(t!=NULL)
lietkela(t->pl);
if(p->pl= =NULL && p->pr= =NULL)
xuat(t->Info);
lietkela(t->pr) ;
}

ĐẾM SỐ NÚT LÁ
1)Ý tưởng :duyệt con trái và con phải đếnkhi chúng
bằng NULL thì sẽ đếm nút lá ở mỗi con và tính tổng.
2)Mã giả:
Function sonutla
{
if( t= NULL ) return 0;
else
{ if (p->pl !=NULL&& p->pr != NULL)

return(sonutla(t->pl) + sonutla(t->pr));
return 1;
}
}

×