1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng điện tử môn tin học: Cây nhị phân pps

66 1,9K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 1,38 MB

Nội dung

Đặ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 node bên trái và nhỏ hơn giá trị tất cả các node bên phải 5... CÁC LƯU Ý

Trang 1

CÂY NHỊ PHÂN TÌM KIẾM

TMT

1

Trang 2

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

Trang 3

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

1 1

Trang 5

Đặ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 node bên trái và nhỏ hơn giá trị tất cả các node bên phải

5

Trang 6

ĐịNH NGHĨA KIểU Dữ LIệU

typedef struct TNODE {

Trang 7

VÍ Dụ KHAI BÁO CÂY NHị PHÂN

BIểU DIễN CÁC NODE LÀ Số

Trang 8

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óng vùng nhớ)

8

Trang 9

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

Trang 13

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

}}

Trang 17

17

Trang 18

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

NLR(t->pRight);

}}

18

Trang 19

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óc Trăng Nha Trang Đồng Nai Vũng Tàu An Giang

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

19

Trang 20

20

Trang 21

LNR(t->pLeft);

cout<<t->Key<<“ “;LNR(t->pRight);

}}

21

Trang 22

22

Trang 23

LRN(t->pLeft);

LRN(t->pRight);

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

}}

23

Trang 25

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ây dự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

Trang 26

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

Trang 27

BÀI TẬP

Bài 6

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ự Left-Right-Node thì được dãy sau: 1, 4, 7, 5, 3, 16, 18, 15, 29,

25, 30, 20, 8.

Node-Left-Right.

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

Trang 28

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,

Trang 33

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ái

5. 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

Trang 34

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

Trang 36

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

Trang 37

Số NODE CÓ 1 CÂY CON

Trang 38

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

Trang 39

Số NODE CÓ 1 CÂY CON PHảI

if(t->pLeft==NULL && t->pRight!=NULL)

Trang 40

Số NODE CHỉ CÓ 1 CÂY CON TRÁI

40

Trang 41

Số NODE CÓ 2 CÂY CON

41

Trang 42

Độ 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;

} else

return 0;

Trang 43

Số NODE CủA CÂY

43

Trang 44

44

Trang 45

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

Trang 46

IN CÁC NODE CủA TấT Cả MứC

46

Trang 47

Độ DÀI ĐƯờNG ĐI Từ GốC ĐếN

NODE X

47

Trang 51

51

Trang 53

TÌM MIN

TNODE* Min(TREE t) {

while(t->pLeft!=NULL) {

t=t->pLeft;

} return t;

}

53

Trang 54

MIN CÂY CON BÊN PHảI

54

Trang 55

TÌM MAX

55

Trang 56

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

56

Trang 59

XÓA NODE TRÊN CÂY

1. Node lá

2. Node có 1 cây con

3. Node có 2 cây con

59

Trang 60

XÓA NODE LÁ

Xóa 1 Xóa 23

60

Trang 61

XÓA NODE 1 CÂY CON

Xóa 6 Xóa 15

61

Trang 62

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

16

23

62

Trang 64

XÓA MộT NODE CÓ GIÁ TRị X

void HuyNut (TREE & t, int x)

delete pHuy;

} }

}

Trang 65

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

Trang 66

Cho dãy số theo thứ tự nhập từ trái sang phải như sau: 20 15 35 30 11 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 theo thứ

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 khi lần lượt xoá các nút: 11 và 35

66

Ngày đăng: 11/08/2014, 22:22

HÌNH ẢNH LIÊN QUAN

3. Hình dạng - Bài giảng điện tử môn tin học: Cây nhị phân pps
3. Hình dạng (Trang 2)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w