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

Bài giảng cấu trúc dữ liệu và giải thuật chương 5 cây nhị phân tìm kiếm

36 1K 0

Đ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 36
Dung lượng 152,13 KB

Nội dung

Cây nhị phân tìm kiếm Trần Minh Thái Email: minhthai@itc.edu.vn Website: www.minhthai.edu.vn... Đặ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 g

Trang 1

Chương 4 Cây nhị phân

tìm kiếm

Trần Minh Thái

Email: minhthai@itc.edu.vn

Website: www.minhthai.edu.vn

Trang 2

Nội dung

1 Khái niệm

2 Đặc điểm

3 Định nghĩa kiểu dữ liệu

4 Các lưu ý khi cài đặt

5 Các thao tác

2

Trang 3

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ác 0 và không phải là

2

2 2

1 1

0

0

0

0

Trang 4

kể từ gốc đến x

Độ cao của cây:

Độ sâu (mức) của nút lá thấp nhất

4

x

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

Nút có giá trị nhỏ nhất nằm ở trái nhất của cây

Trang 6

Định nghĩa kiểu dữ liệu

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ỷ, …

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

Trang 11

về bên phải

Trang 13

Duyệt cây

Trang 14

Bước Kết quả duyệt theo thứ tự NLR

Trang 15

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);

} }

Trang 16

16

Trang 17

Bước Kết quả duyệt theo thứ tự LNR

Trang 18

Duyệt cây con bên

phải của t theo thứ tự

LNR

18

void LNR (TREE t) {

if(t!=NULL) {

LNR(t->pLeft);

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

} }

Trang 19

Bước Kết quả duyệt theo thứ tự LRN

Trang 20

if(t!=NULL) {

LRN(t->pLeft);

LRN(t->pRight);

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

}

Trang 21

Bài tập

Bài 4 Vẽ cây nhị phân tìm kiếm theo thứ tự

nhập:

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 Vẽ cây nhị phân tìm kiếm theo thứ tự

nhập:

H, B, C, A, E, D, T, M, X, O

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

Trang 22

Vấn đề cần quan tâm

Tạo cây từ kết quả duyệt 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 tạo cây

Tạo cây từ kết quả duyệt 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 tạo cây

22

Trang 23

Vấn đề cần quan tâm

Tạo cây từ kết quả duyệt LNR

 Gọi r: Số lượng giá trị cho trước

 Gọi m = r div 2: Giá trị ở giữa

Trang 24

Bài tập

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

khi duyệt cây T theo thứ tự NLR thì được dãy sau: 9, 4, 1, 3, 8, 6, 5, 7, 10, 14, 12, 13,

16, 19

nhánh của cây

24

Trang 25

Bài 7 Vẽ cây nhị phân tìm kiếm T biết rằng

khi duyệt cây T theo thứ tự LRN thì được dãy sau: 1, 4, 7, 5, 3, 16, 18, 15, 29, 25, 30,

20, 8

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

Bài tập

Trang 26

Hàm nhập dữ liệu vào cây

void Nhap(TREE &t)

Trang 27

Hàm main gọi thao tác duyệt LNRvoid main()

Trang 30

Xóa node trên cây

1 Node lá

2 Node có 1 cây con

3 Node có 2 cây con

Trang 31

Xóa node lá

Xóa 1Xóa 23

7

23 4

Trang 32

Xóa node 1 cây con

Xóa 6Xóa 15

4 23

Trang 33

Xóa node 2 cây con

23

Trang 34

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

phải: 20, 15, 35, 30, 11, 13, 17, 36, 47,

16, 38, 28, 14

Vẽ cây nhị phân tìm kiếm cho dãy số trên

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

34

Trang 35

Viết hàm

1 In ra các node có giá trị chẵn

2 In ra các node có giá trị lớn hơn x

3 Độ cao của cây

4 Số node của cây

5 Tìm min, max

6 Tìm node có giá trị x

Trang 36

Viết hàm

7 Số node lá (node bậc 0)

8 Số node có 1 cây con (node bậc 1)

9 Số node chỉ có 1 cây con phải

10 Số node có 1 cây con trái

11 Số node 2 cây con (node bậc 2)

12 Các node trên từng mức của cây

13 Độ dài đường đi từ gốc đến node x

36

Ngày đăng: 04/09/2015, 15:14

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w