1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - ThS. Trịnh Quốc Sơn (ĐH Công nghệ Thông tin)

19 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 377,37 KB

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 7: Cây nhị phân tìm kiếm cung cấp cho người họ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, tạo cây rỗng,... Mời các bạn cùng tham khảo nội dung chi tiết.

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

Ngày đăng: 09/05/2021, 18:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN