Danh mục

Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 21: Cây nhị phân tìm kiếm

Số trang: 14      Loại file: pdf      Dung lượng: 994.02 KB      Lượt xem: 4      Lượt tải: 0    
10.10.2023

Hỗ trợ phí lưu trữ khi tải xuống: 2,000 VND Tải xuống file đầy đủ (14 trang) 0

Báo xấu

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

"Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 21: Cây nhị phân tìm kiếm" thông tin đến các bạn những kiến thức về khái niệm cây nhị phân tìm kiếm, các thao tác trên cây nhị phân tìm kiếm, một vài ví dụ sử dụng cây nhị phân tìm kiếm.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 21: Cây nhị phân tìm kiếm Cấu trúc dữ liệu và giải thuật Bài 21. Cây nhị phân tìm kiếm Giảng viên: TS. Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com1 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical UniversityBài 21: Cây nhị phân tìm kiếmNội dung: 21.1. Khái niệm cây nhị phân tìm kiếm. 21.2. Các thao tác trên cây nhị phân tìm kiếm. 21.3. Một vài ví dụ sử dụng cây nhị phân tìm kiếm.Tham khảo:1. Deshpande Kakde: C and Data structures.chm, Chapter 20: Linked Lists2. Elliz Horowitz – Fundamentals of Data Structures.chm, Chapter 4: Linked Lists3. Kyle Loudon: Mastering Algorithms with C.chm, Chapter 5 Linked Lists.4. Bài giảng TS Nguyễn Nam Hồng2 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.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.3 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.1. Khái niệm về cây NPTK (2/4) 50 30 60 25 40 70 35 65 Ví dụ về cây nhị phân tìm kiếm4 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.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).5 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.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 struct tbnode { TreeEntry data; struct tbnode *lchild, *rchild; };6 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.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ó.7 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.2. Các thao tác trên cây NPTK (2/)Khai báo lớp cây nhị phân tìm kiếm:template class TBTree {public: TBTree(); int TBInsert(TreeEntry value); int TBCount(); void TBRInorder(tbnode* treenode, QueueClassC *q); void TBRPostorder(tbnode* treenode, QueueClassC *q); void TBRPreorder(tbnode* treenode, QueueClassC *q); void TBInorder(QueueClassC* q); void TBPostorder(QueueClassC* q); void TBPreorder(QueueClassC* q); void TBLevelorder(QueueClassC* q); void TBGetptr(tbnode **father, tbnode **curr, TreeEntry value); int TBDelete(TreeEntry value); template friend void TreePrint(TBTree tree, int type);private: tbnode * root; };8 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.2. Các thao tác trên cây NPTK (3/)Khởi tạo cây NPTK:template TBTree::TBTree(){ root root=NULL;} NULL9 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.2. Các thao tác trên cây NPTK (4/)Thêm một node vào cây NPTK: root 1 Nếu cây rỗng, cấp phát ô nhớ cho con trỏ root. 50 Nếu cây không rỗng:  Sử dụng 2 con trỏ temp và temp1 để xác định vị trí cần thêm (con trỏ temp1 NULL NULL sẽ trỏ vào NULL, con trỏ temp sẽ trỏ vào node là cha của node mới).  Tùy thuộc vào giá trị mới được thêm 2 vào sẽ cấp phát ô nhớ cho temp->left 50 hay temp->right. 30 temp 60 25 40 Thêm node 70 có giá trị 35 NULL 45 65 45 vào cây NULL NULL10 @copyright by PhD Ngo Huu Phuc, Le Quy Don Technical University21.2. Các thao tác trên cây NPTK (5/) temp1=temp1->lchild;Thêm một node vào cây NPTK else ...

Tài liệu được xem nhiều:

Tài liệu liên quan: