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]
Trang 1Gi ảng viên: TS Ngo Huu Phuc
Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com
C ấu trúc dữ liệu và giải thuật
Bài 21 Cây nh ị phân tìm kiếm
Trang 2Bài 21: Cây nh ị phân tìm kiếm
N ội dung:
1 Deshpande Kakde: C and Data structures.chm, Chapter 20: Linked Lists
2 Elliz Horowitz – Fundamentals of Data Structures.chm, Chapter 4: Linked Lists
3 Kyle Loudon: Mastering Algorithms with C.chm, Chapter 5 Linked Lists.
4 Bài gi ảng TS Nguyễn Nam Hồng
Trang 321.1 Khái ni ệm về cây nhị phân tìm kiếm (1/4)
Khái ni ệm:
Cây nhị phân tìm kiếm là cây rỗng hoặc cây mà node có
chứa các khóa
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 root
Cây con bên trái và phải cũng là cây nhị phân tìm kiếm
Việc quản lý cây nhị phân thông qua node root
Trang 421.1 Khái ni ệm về cây NPTK (2/4)
Ví dụ về cây nhị phân tìm kiếm
50 30
35
60
70
65
Trang 521.1 Khái ni ệm về cây NPTK (3/4)
M ột số tính chất của cây NPTK:
Cây nhị phân tìm kiếm là t ập con của cây nhị phân, nên nó
cũng có các cách duyệt LNR, LRN, NLR
Với cây nhị phân tìm kiếm, nếu duyệt cây theo kiểu inorder ta
sẽ được một dãy đã sắp theo chiều tăng dần
Cây nhị phân tìm kiếm là cấu trúc tìm kiếm hiệu quả Việc tìm
kiếm trên cây nhị phân tìm kiếm nhanh hơn tìm kiếm tuần tự Tuy nhiên, việc biểu diễn cây dạng mảng sẽ gây khó khăn cho
việc thêm, bớt
Với việc biểu diễn dạng liên kết, ta có độ phức tạp của việc tìm
kiếm là O( logn).
Trang 621.1 Khái ni ệm về cây NPTK (4/4)
C ấu trúc cây nhị phân tìm kiếm:
template < class TreeEntry>
struct tbnode {
TreeEntry data;
struct tbnode *lchild, *rchild;
};
Trang 721.2 Các thao tác trên cây NPTK (1/)
M ột số thao tác trên cây nhị phân tìm kiếm:
1. Kh ởi tạo cây NPTK
2. TBInsert: Thêm một node vào cây NPTK
3. TBCount: đếm số node trên cây NPTK
4. TBRInorder: duyệt cây dạng inorder
5. TBRPostorder: duyệt cây dạng postorder
6. TBRPreorder: duyệt cây dạng preorder
7. TBLevelorder: duyệt cây dạng levelorder
8. TBDelete: xóa node trên cây NPTK
9. TBGetptr: định vị một node và node cha của nó