Bài giảng Cấu trúc dữ liệu và giải thuật: Cây nhị phân tìm kiếm
lượt xem 6
download
Bài giảng "Cấu trúc dữ liệu và giải thuật: Cây nhị phân tìm kiếm" cung cấp cho người đọc các kiến thức: Định nghĩa cây nhị phân tìm kiếm, ưu điểm của cây nhị phân tìm kiếm, cấu trúc dữ liệu của cây nhị phân tìm kiếm,.... Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Cây nhị phân tìm kiếm
- NỘIMaster Click To Edit DUNGTitle Style Ðịnh nghĩaTo Click cây nhị Master Edit phân tìm Title 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 44 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à thuật giải Ví dụ: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 18 88 13 37 59 108 15 23 40 55 71 1 2 Ưu Click điểm của To cây EditnhịMaster phân tìm kiếm Title Style CấuClick trúc dữ Toliệu củaMaster Edit cây nhị Title phân Style tìm kiếm • Nhờ trật tự bố trí khóa trên cây : • Cấu trúc dữ liệu của 1 nút – Định hướng được khi tìm kiếm typedef struct tagTNode • Cây gồm N phần tử : { – Trường hợp tốt nhất h = log2N, int Key; //trường dữ liệu là 1 số nguyên – Trường hợp xấu nhất h = LnN struct tagTNode *pLeft; Cấu trúc dữ liệu và thuật giả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 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT – Tình huống xảy ra trường hợp xấu nhất ? struct tagTNode *pRight; }TNode; • Cấu trúc dữ liệu của cây typedef TNode *TREE; 3 4 1
- CácClick thao tác To trên Editcây nhị phân Master tìmStyle Title kiếm TạoClick cây rỗng To Edit Master Title Style • Cây rỗng -> địa chỉ nút gốc bằng NULL Tạo 1 cây rỗng void CreateTree(TREE &T) { Tạo 1 nút có trường Key bằng x T=NULL; 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à thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 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 1 nút To có Key Editbằng x Master Title Style Thêm mộtTo Click nútEdit x Master Title Style TNode *CreateTNode(int x) • Rằng buộc: Sau khi thêm cây đảm bảo là cây { nhị phân tìm kiếm. TNode *p; int insertNode(TREE &T, Data X) p = new TNode; //cấp phát vùng nhớ động { if(T) if(p==NULL) { if(T->Key == X) return 0; exit(1); // thoát 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à thuật giải else CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT else return insertNode(T->pRight, X);} { T = new TNode; p->key = x; //gán trường dữ liệu của nút = x if(T == NULL) return -1; p->pLeft = NULL; T->Key = X; p->pRight = NULL; T->pLeft =T->pRight = NULL; } return p; return 1; } } 7 8 2
- Minh họa thêm Click 1 phần To Edit tử vàoTitle Master cây Style TìmClick nút có khoá To EditbằngMaster x (không dùng TitleđệStyle quy) TNode * searchNode(TREE Root, Data x) 44 44 < X { Node *p = Root; Theâm X=50 while (p != NULL) 18 88 > X 88 { 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à thuật giải CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 13 37 59 108 if(x < p->Key) p = p->pLeft; 59 > X else p = p->pRight; 15 23 40 55 71 } 55 > X return NULL; 50 } 9 10 TìmClick nút cóTo khoá bằng Edit x (dùng Master đệ quy) Title Style Minh hoạ tìm Click To một Editnút Master Title Style TNode *SearchTNode(TREE T, int x) { 44 if(T!=NULL) Tìm X=55 { 55 if(T->key==x) 18 88 return T; Cấu trúc dữ liệu và thuật giải 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 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT if(x>T->key) 13 37 59 108 return SearchTNode(T->pRight,x); else return SearchTNode(T->pLeft,x); 15 23 40 55 71 } return NULL; Tìm thấy X=55 } 11 12 3
- Minh hoạ thành Click lập Master To Edit 1 cây từ Title dãy sốStyle HủyClick 1 nút To có khoá Edit bằng X trên Master câyStyle Title 9, 5, 4, 8, 6, 3, 14,12,13 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 9 Có 3 trường hợp khi hủy 1 nút trên cây 5 1 TH1: X là nút lá 4 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à thuật giải 12 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT TH3: X có đầy đủ 2 cây con 4 8 TH1: Ta xoá nút lá mà không ành hưởng đến các nút khác trên cây 3 6 13 TH2: Trước khi xoá x ta móc nối cha của X với con duy nhất cùa X. 13 TH3: Ta dùng cách xoá gián tiếp 14 Click To TH: Edit XMaster là nút Title lá Style Trường Click To Edithợp 1: X là Title Master nút lá Style • 1. Xóa node này • Ví dụ : chỉ đơn giản hủy X vì nó không móc nối • 2. Gán liên kết từ cha của nó thành rỗng đến phần tử nào khác. T/h 1: huûy X=40 44 Cấu trúc dữ liệu và thuật giả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 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 18 88 13 37 59 108 15 23 40 55 71 15 16 4
- Click hợp Trường To 2: Edit X chỉMaster có 1 conTitle Style (trái hoặc phải) Minh hoạ hủy Click phần Master To Edit tử x có 1Title cây con Style 1. Gán liên kết từ cha của nó xuống con duy 44 Hủy X=37 nhất của nó 2. Xóa node này 18 88 u u Cấu trúc dữ liệu và thuật giả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 CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 13 37 59 108 x v v 15 23 55 71 17 18 Trường Click Tohợp Edit3: X có đủ Master 2 con Title Style HủyClick 1 nút To có 2Edit cây Master con Title Style 1. Tìm w là node trước node x trên phép duyệt cây Ta dùng cách hủy gián tiếp, do X có 2 cây con inorder (chính là node cực phải của cây con bên Thay vì hủy X ta tìm phần tử thế mạng Y. Nút Y có trái của x) tối đa 1 cây con. 2. Thay x bằng w Thông tin lưu tại nút Y sẽ được chuyển lên lưu tại 3. Xóa node w cũ (giống trường hợp 1 hoặc 2 đã xét) X. Ta tiến hành xoá hủy nút Y (xoá Y giống 2 trường Cấu trúc dữ liệu và thuật giải Cấu trúc dữ liệu và thuật giải hợp đầu) CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 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 19 20 5
- Minh họa hủy Click phần Master To Edit tử X có 2Title cây con Style Nhận Click To Edit xét Title Style Master – Tất cả các thao tác tìm kiếm, thêm, xoá đều có độ Xoá nút có trường 44 phức tạp trung bình O(h), với h là chiều cao của cây Key = 18, lúc đó nút có khoá 23 là nút thế mạng – Trong trong trường hợp tốt nhất, CNPTK có n nút sẽ có độ cao h = log2(n). Chi phí tìm kiếm khi đó sẽ 18 88 tương đương tìm kiếm nhị phân trên mảng có thứ tự. – Trong trường hợp xấu nhất, cây có thể bị suy biến Cấu trúc dữ liệu và thuật giải Cấu trúc dữ liệu và thuật giải thành 1 danh sách liên kết (khi mà mỗi nút đều chỉ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 13 37 59 108 có 1 con trừ nút lá). Lúc đó các thao tác trên sẽ có độ phức tạp O(n). 15 23 40 55 71 – Vì vậy cần có cải tiến cấu trúc của CNPTK để đạt được chi phí cho các thao tác là log2(n). 30 21 22 6
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 79 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn