Các khóa c ủa node trên cây con bên trái nhỏ hơn khóa của root, khóa c ủa các node trên cây con bên phải lớn hơn khóa c ủa root4. Cây con bên trái và ph ải cũng là cây nhị phân tìm[r]
(1)Giảng viên: TS Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580
Email:
Cấu trúc liệu giải thuật
(2)Bài 21: Cây nhị phân tìm kiếm
Nội dung:
21.1 Khái niệm nhị phân tìm kiếm.
21.2 Các thao tác nhị phân tìm kiếm.
21.3 Một vài ví dụ sử dụng nhị phân tìm kiếm.
Tham khảo:
1 Deshpande Kakde: C and Data structures.chm, Chapter 20: Linked Lists
2 Elliz Horowitz – Fundamentals of Data Structures.chm, Chapter 4: Linked Lists Kyle Loudon: Mastering Algorithms with C.chm, Chapter Linked Lists
(3)21.1 Khái niệm nhị phân tìm kiếm (1/4)
Khái niệm:
Cây nhị phân tìm kiếm rỗng mà node có chứa khóa
Các khóa node bên trái nhỏ khóa root, khóa node bên phải lớn khóa root
Cây bên trái phải nhị phân tìm kiếm
(4)21.1 Khái niệm NPTK (2/4)
Ví dụ nhị phân tìm kiếm
50 30
25 40
35
60
70
(5)21.1 Khái niệm NPTK (3/4)
Một số tính chất NPTK:
Cây nhị phân tìm kiếm tập của nhị phân, nên có cách duyệt LNR, LRN, NLR
Với nhị phân tìm kiếm, duyệt theo kiểu inorder ta dãy theo chiều tăng dần
Cây nhị phân tìm kiếm cấu trúc tìm kiếm hiệu Việc tìm kiếm nhị phân tìm kiếm nhanh tìm kiếm Tuy nhiên, việc biểu diễn dạng mảng gây khó khăn cho việc thêm, bớt
(6)21.1 Khái niệm NPTK (4/4)
Cấu trúc nhị phân tìm kiếm:
template <class TreeEntry>
struct tbnode {
TreeEntry data;
(7)21.2 Các thao tác NPTK (1/)
Một số thao tác nhị phân tìm kiếm:
1. Khởi tạo cây NPTK
2. TBInsert: Thêm node vào NPTK 3. TBCount: đếm số node NPTK 4. TBRInorder: duyệt dạng inorder
5. TBRPostorder: duyệt dạng postorder 6. TBRPreorder: duyệt dạng preorder 7. TBLevelorder: duyệt dạng levelorder 8. TBDelete: xóa node NPTK