intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 7: CÂY NHỊ PHÂN TÌM KIẾM

Chia sẻ: Lê Trinh Vàng | Ngày: | Loại File: PPT | Số trang:19

148
lượt xem
20
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo bài thuyết trình 'cấu trúc dữ liệu và giải thuật - chương 7: cây nhị phân tìm kiếm', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - CHƯƠNG 7: CÂY NHỊ PHÂN TÌM KIẾM

  1. CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 Cấu trúc dữ liệu và thuật giải Click To Edit 1 NỘMaster CÂY NHỊ PHÂN TÌM KIẾM I DUNGTitle Style
  2. Click Ðịnh nghĩaTo câyEdit Master nhị phân Title tìm kiếm Style • Cây nhị phân • Bảo đảm nguyên tắc bố trí khoá tại mỗi nút: – Các nút trong cây trái nhỏ hơn nút hiện hành – Các nút trong cây phải lớn hơn nút hiện hành Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 Ví dụ: 18 13 37 15 23 40 2
  3. Ưu Click điểm cTo EditnhMaster ủa cây Title ị phân tìm kiếmStyle • Nhờ trật tự bố trí khóa trên cây : – Định hướng được khi tìm kiếm • Cây gồm N phần tử : – Trường hợp tốt nhất h = log2N Cấu trúc dữ liệu và thuật giải – Trường hợp xấu nhất h = Ln CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 – Tình huống xảy ra trường hợp xấu nhất ? 3
  4. CấuClick trúc dTo ữ liệEdit u củaMaster cây nhị Title Style phân tìm kiếm • Cấu trúc dữ liệu của 1 nút typedef struct tagTNode { int Key; //trường dữ liệu là 1 số nguyên struct tagTNode *pLeft; Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 struct tagTNode *pRight; }TNode; • Cấu trúc dữ liệu của cây typedef TNode *TREE; 4
  5. CácClick Totrên thao tác Editcây Master Title nhị phân tìm Style kiếm  Tạo 1 cây rỗng  Tạo 1 nút có trường Key bằng x  Thêm 1 nút vào cây nhị phân tìm kiếm Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1  Xoá 1 nút có Key bằng x trên cây  Tìm 1 nút có khoá bằng x trên cây 5
  6. TạoClick cây rỗTo ng Edit Master Title Style • Cây rỗng -> địa chỉ nút gốc bằng NULL void CreateTree(TREE &T) { T=NULL; } Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 6
  7. TạoClick ToKey 1 nút có EditbằMaster ng x Title Style TNode *CreateTNode(int x) { TNode *p; p = new TNode; //cấp phát vùng nhớ động if(p==NULL) exit(1); // thoát Cấu trúc dữ liệu và thuật giải else CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 { p->key = x; //gán trường dữ liệu của nút = x p->pLeft = NULL; p->pRight = NULL; } return p; } 7
  8. Click Thêm mộtTo nút Edit x Master Title Style • Rằng buộc: Sau khi thêm cây đảm bảo là cây nhị phân tìm kiếm. int insertNode(TREE &T, Data X) { if(T) { if(T->Key == X) return 0; if(T->Key > X) return insertNode(T->pLeft, X); Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 else return insertNode(T->pRight, X);} T = new TNode; if(T == NULL) return -1; T->Key = X; T->pLeft =T->pRight = NULL; return 1; } 8
  9. Click Minh To Edit họa thêm 1 phMaster ần tử vàoTitle cây Style 44 44 < X Theâm X=50 18 88 > X 88 Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 13 37 59 108 59 > X 15 23 40 55 71 55 > X 50 9
  10. Tìm Click To Edit nút có khoá bằngMaster TitleđStyle x (không dùng ệ quy) TNode * searchNode(TREE Root, Data x) { Node *p = Root; while (p != NULL) { if(x == p->Key) return p; else Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 if(x < p->Key) p = p->pLeft; else p = p->pRight; } return NULL; } 10
  11. TìmClick nút cóTo Edit khoá Master bằng x (dùngTitle Style đệ quy) TNode *SearchTNode(TREE T, int x) { if(T!=NULL) { if(T->key==x) return T; Cấu trúc dữ liệu và thuật giải else CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 if(x>T->key) return SearchTNode(T->pRight,x); else return SearchTNode(T->pLeft,x); } return NULL; } 11
  12. Click Minh To mEdit hoạ tìm Master ột nút Title Style 44 Tìm X=55 55 18 88 Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 13 37 59 108 15 23 40 55 71 Tìm thấy X=55 12
  13. Click Minh To Edit hoạ thành lập Master TitlesốStyle 1 cây từ dãy 9, 5, 4, 8, 6, 3, 14,12,13 9 5 14 Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 4 8 12 3 6 13 13
  14. HủyClick 1 nút To EditbMaster có khoá Title ằng X trên cây Style  Hủy 1 phần tử trên cây phải đảm bảo điều kiện ràng buộc của Cây nhị phân tìm kiếm  Có 3 trường hợp khi hủy 1 nút trên cây  TH1: X là nút lá  TH2: X chỉ có 1 cây con (cây con trái hoặc cây con phải) Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1  TH3: X có đầy đủ 2 cây con  TH1: Ta xoá nút lá mà không ành hưởng đến các nút khác ttrên cây  TH2: Trước khi xoá x ta móc nối cha của X với con duy nhất cùa X. 14 gián tiếp  TH3: Ta dùng cách xoá
  15. Click Minh hoạ hTo ủy Edit phần Master tử x có 1Title Style cây con Hủy X=37 44 18 88 Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 13 37 59 108 15 23 55 71 15
  16. HủyClick 1 nút To có 2Edit Master cây con Title Style  Ta dùng cách hủy gián tiếp, do X có 2 cây con  Thay vì hủy X ta tìm phần tử thế mạng Y. Nút Y có tối đa 1 cây con.  Thông tin lưu tại nút Y sẽ được chuyển lên lưu tại X.  Ta tiến hành xoá hủy nút Y (xoá Y giống 2 trường hợp đầu) Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1  Cách tìm nút thế mạng Y cho X: Có 2 cách  C1: Nút Y là nút có khoá nhỏ nhất (trái nhất) bên cây con phải X  C2: Nút Y là nút có khoá lớn nhất (phải nhất) bên cây con trái của X 16
  17. Click Minh họa hTo ủy Edit phần Master tử X có 2Title Style cây con Xoá nút có trường 44 Key = 18, lúc đó nút có khoá 23 là nút thế mạng 18 88 Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 13 37 59 108 15 23 40 55 71 30 17
  18. Cài Click Totác đặt thao Edit xoáMaster Title nút có trườ Style ng Key =x void DeleteNodeX1(TREE &T,int x) { if(T!=NULL) { if(T->KeyRight,x); else { if(T->Key>x) DeleteNodeX1(T->Left,x); else //tim thấy Node có trường dữ liệu = x { TNode *p; Cấu trúc dữ liệu và thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 p=T; if (T->Left==NULL) T = T->Right; else { if(T->Right==NULL) T=T->Left; else ThayThe1(p, T->Right);// tìm bên cây con phải } delete p; } } } else printf("Khong tim thay phan 18 can xoa tu");}
  19. Click Hàm To tìm phầnEdit tử thếMaster mạng Title Style void ThayThe1(TREE &p, TREE &T) { if(T->Left!=NULL) ThayThe1(p,T->Left); else Cấu trúc dữ liệu và thuật giải { CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 1 p->Key = T->Key; p=T; T=T->Right; } } 19
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2