Cây nhị phân tìm kiếm Cây nhị phân tìm kiếm Bởi: Trần Hạnh Nhi CÂY NHỊ PHÂN TÌM KIẾM Định nghĩa: Cây nhị phân tìm kiếm (CNPTK) là cây nhị phân trong đ

Tài liệu tương tự
Cây và cây nhị phân Cây và cây nhị phân Bởi: Trần Hạnh Nhi CẤU TRÚC CÂY Định nghĩa 1: cây là một tập hợp T các phần tử (gọi là nút của cây) trong đó c

Microsoft Word - danh-sach-lien-ket-doi-trong-c.docx

Microsoft Word - cau-truc-du-lieu-danh-sach-lien-ket.docx

MỘT SỐ PHƯƠNG PHÁP GIẢI PHƯƠNG TRÌNH CHỨA ẨN DƯỚI DẤU CĂN Ở ĐẠI SỐ LỚP 1O

DLVN 284, Can phan tich - QTHC chuan do luong

Đề xuất thuật toán cải tiến hiệu năng mạng P2P

2 2. Quỹ hoạt động theo mô hình Công ty trách nhiệm hữu hạn một thành viên do Nhà nước nắm giữ 100% vốn điều lệ. 3. Quỹ có tư cách pháp nhân, có vốn đ

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

5 Ban thuyet minh BCTC hop nhat_Viet

Danh sách tuyến tính kiểu hàng đợi Danh sách tuyến tính kiểu hàng đợi Bởi: Khoa CNTT ĐHSP KT Hưng Yên ĐỊNH NGHĨA Hàng đợi là một vật chứa (container)

Những cơ sở của ngôn ngữ C# Những cơ sở của ngôn ngữ C# Bởi: phamvanviet truonglapvy Trong chương này sẽ trình bày về hệ thống kiểu trong C#; phân biệ

14/2/2017 NGÂN HÀNG NHÀ NƯỚC VIỆT NAM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập Tự do Hạnh phúc Số: 39/2016/TT NHNN Hà Nội, ngày 30 tháng 12 năm 2016

Hàm và lớp template trong Lập trình hướng đối tượng Hàm và lớp template trong Lập trình hướng đối tượng Bởi: unknown Trong phần này, chúng ta tìm hiểu

Chương 1:

CÔNG BÁO/Số /Ngày BỘ XÂY DỰNG BỘ XÂY DỰNG Số: 09/2016/TT-BXD CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Hà Nộ

Microsoft Word - hop dong mua ban E6 (can ho).doc

ĐIỀU KHOẢN, ĐIỀU KIỆN VỀ VIỆC SỬ DỤNG DỊCH VỤ NGÂN HÀNG ĐIỆN TỬ - EBANK ĐIỀU 1. ĐIỀU 2. Phạm vi áp dụng Điều khoản, điều kiện này áp dụng đối với các

Chương trình dịch

BỘ ĐỀ THI TUYỂN CÔNG CHỨC NĂM 2017 MÔN THI: TRẮC NGHIỆM NGHIỆP VỤ CHUYÊN NGÀNH TÀI CHÍNH KẾ TOÁN (Mã: TACH_ 400 câu) Câu 1: Theo Điều 55 của Luật Kế t

Tổng quan Bài Độ khó nghĩ / cài Tag unsigned s Result A. Invariant Sets / Đồ thị +4 / 185 B. Scheduling Events / DP +2 / 11 C. XOR / Tham lam, bitwise

THỎA THUẬN SỬ DỤNG PHẦN MỀM QUẢN TRỊ DOANH NGHIỆP HỢP NHẤT AMIS.VN Phiên bản V2.0 ngày 04/05/2018 Đây là thỏa thuận pháp lý giữa khách hàng với Công t

View, Procedure, Function & Trigger

PHẦN VIII

BỔ TÁT TÙNG ĐỊA DŨNG XUẤT TRONG PHÁP HOA KINH HT. Trí Quảng --- o0o --- Nguồn Chuyển sang ebook Người thực hiện : Na

HiÖp ®Þnh

Microsoft PowerPoint - Chuong_06.ppt

BỘ GIÁO DỤC VÀ ĐÀO TẠO

Trường ĐHBK Hà Nội Khoa Điện Bộ môn Điều khiển Tự động Tài liệu hướng dẫn thực hành: KĨ THUẬT LẬP TRÌNH C/C++ Bài 1: Lập trình cơ sở 1 Mục đích bài th

Microsoft Word - su_dung_sqlite_voi_php.docx

Microsoft Word - Tom tat luan an chinh thuc.doc

Nghị định số 48/2010/NĐ-CP ngày 07/5/2010 về hợp đồng trong hoạt động xây dựng

KIỂM TOÁN NHÀ NƯỚC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Số: 09/2017/QĐ-KTNN Hà Nội, ngày 15 tháng 8

Câu lệnh (statement) Câu lệnh (statement) Bởi: Khuyet Danh Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh. Chương trình bao gồm nhiều câu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 13. Hàm Nội dung 1. Khái niệm hàm 2. Khai báo và sử dụn

2 CÔNG BÁO/Số /Ngày VĂN BẢN QUY PHẠM PHÁP LUẬT CHÍNH PHỦ CHÍNH PHỦ Số: 167/2017/NĐ-CP CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập -

Microsoft Word - QUY CHẾ HOẠT ĐỘNG TMĐT PIERRE.docx

ĐỀ CƯƠNG PHÁP LUẬT C u 1 : Hành vi nhũng nhiễu vì vụ lợi A. Sử dụng tài sản của Nhà nước vượt chế độ, định mức, tiêu chuẩn; C. Sử dụng chức vụ, quyền

2 CÔNG BÁO/Số /Ngày PHẦN VĂN BẢN QUY PHẠM PHÁP LUẬT CHÍNH PHỦ CHÍNH PHỦ Số: 73/2012/NĐ-CP CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc l

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập Tự do Hạnh phúc QUY ĐỊNH Về tổ chức và quản

BÀI TẬP THỰC HÀNH

TRƯỜNG ĐẠI HỌC AN GIANG

Microsoft Word - TCVN Moc noi do dam

BCTC Mẹ Q xlsx

Công ty Cổ phần Dịch vụ Tổng hợp Sài Gòn và các công ty con Báo cáo tài chính hợp nhất giữa niên độ cho giai đoạn sáu tháng kết thúc ngày 30 tháng 6 n

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM QCVN 01:2008/BCT QUY CHUẨN KỸ THUẬT QUỐC GIA VỀ AN TOÀN ĐIỆN National technical regulation on Electric safety HÀ NỘ

BCTC Hop nhat Transimex-Q xls

Các hình thức bảo lãnh ngân hàng Các hình thức bảo lãnh ngân hàng Bởi: Đại Học Kinh Tế Quốc Dân Phân loại theo phương thức phát hành: Bảo lãnh trực ti

Phật Học Phổ Thông HT. Thích Thiện Hoa Khóa Thứ Hai Thiên Thừa Phật Giáo o0o Bài Thứ 9 Lục Hòa A Mở Ðề 1. Tai hại của sự bất hòa: Trong sự sống chung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc CHƯƠNG TRÌNH ĐÀO TẠO ĐẠI HỌC NG

ĐẠI HỌC QUỐC GIA HÀ NỘI KHOA LUẬT NGUYỄN THU TRANG HIỆU LỰC CỦA HỢP ĐỒNG MUA BÁN NHÀ Ở HÌNH THÀNH TRONG TƢƠNG LAI THEO PHÁP LUẬT V

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 11. Tệp tin Nội dung 1. Khái niệm cơ bản 2. Các thao tá

Microsoft Word - unicode.doc

quy phạm trang bị điện chương ii.4

Kết nối và thao tác với CSDL trong ASP Kết nối và thao tác với CSDL trong ASP Bởi: Khoa CNTT ĐHSP KT Hưng Yên Qui tắc chung - Tạo đối tượng Connection

Chiến lược kiểm thử Chiến lược kiểm thử Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các công đoạn kiểm thử Quá trình kiểm thử có thể chia làm các giai đoạn : Kiểm

CHÍNH SÁCH ÁP DỤNG RIÊNG CHO PHƯƠNG THỨC THỰC HIỆN BỞI LAZADA Không phụ thuộc vào các quy định trái với Các Điều Khoản, khi Nhà Bán Hàng lựa chọn phươ

Chương 7 KIỂM SOÁT CHẤT LƯỢNG Nguyên tắc Mọi cơ sở sản xuất phải có một hệ thống kiểm soát chất lượng được thiết lập để bảo đảm sản phẩm được sản xuất

Microsoft Word - Sử dụng và chỉnh lí bản đồ địa chính - chuyên đề 5.doc

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KINH TẾ o0o NGÔ THANH SƠN PHÁT TRIỂN HOẠT ĐỘNG TÍN DỤNG TẠI NGÂN HÀNG THƢƠNG MẠI CỔ PHẦN CÔNG

Untitled-1

MỞ ĐẦU

Quydinh.doc

Lập trình và ngôn ngữ lập trình

Microsoft Word - QUY TAC DU LI?CH QUÔ´C TÊ´–2011.doc

HƯỚNG DẪN SỬ DỤNG ĐƯỢC CHẤP NHẬN DÀNH CHO HỌC VIÊN ĐỐI VỚI CÔNG NGHỆ CỦA KELLER ISD Các tài nguyên công nghệ, bao gồm truy cập Internet, sẽ được sử dụ

Template and Exception Template and Exception Bởi: Thanh Hiền Vũ TEMPLATE Trong phần này, chúng ta tìm hiểu về một trong các đặc tính còn lại của C++,

Phụ lục số II

BỘ TÀI CHÍNH Số: 76/2013/TT-BTC CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc

Hướng dẫn khai lý lịch cán bộ, công chức mẫu 2a Đại học Y Dược TP. Hồ Chí Minh HƯỚNG DẪN KHAI LÝ LỊCH CÁN BỘ, CÔNG CHỨC MẪU 2A Bước 1: Đăng nhập hệ th

Microsoft Word - LUAT HANH CHINH.doc

CÁC CHỦ BIỆT THỰ FLAMINGO Số: 01/2016 (V/v: giải quyết các vấn đề liên quan đến quyền sở hữu, sử dụng biệt thự khai thác chương trình BTVV) CỘNG HÒA X

CÔNG TY CỔ PHẦN THƯƠNG MẠI XUẤT NHẬP KHẨU THIÊN NAM THUYẾT MINH BÁO CÁO TÀI CHÍNH HỢP NHẤT GIỮA NIÊN ĐỘ (Tiếp theo) MẪU SỐ B 09a-DN THUYẾT MINH BÁO CÁ

Chương 5 Kiểm định giả thuyết thống kê Bài giảng Lý thuyết xác suất và thống kê toán Khái niệm chung Giả thuyết thống kê Thủ tục kiểm định Các bước ti

Lớp và đối tượng-các hàm và các lớp friend Lớp và đối tượng-các hàm và các lớp friend Bởi: Thanh Hiền Vũ CÁC HÀM VÀ CÁC LỚP friend Một hàm friend của

Pháp luật về giải quyết tranh chấp đất đai thông qua cơ quan hành chính nhà nước trên địa bàn huyện Thanh Trì - Hà Nội Trần Thanh Thủy Khoa Luật Luận

Microsoft Word - Authpaper_ICO_2019.docx

NGHỊ ĐỊNH QUY ĐỊNH VỀ ĐÁNH GIÁ MÔI TRƯỜNG CHIẾN LƯỢC, ĐÁNH GIÁ TÁC ĐỘNG MÔI TRƯỜNG, CAM KẾT BẢO VỆ MÔI TRƯỜNG Số: 29/2011/NĐ-CP

I _Copy

UỶ BAN NHÂN DÂN TỈNH BẮC NINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Số: 140/2012/QĐ-UBND Bắc Ninh, n

Thuyết minh về Lăng Bác

Microsoft Word - Vinamilk-FS Separate-VN-Final sign.doc

QUY CHẾ VỀ TỔ CHỨC VÀ HOẠT ĐỘNG CỦA BAN KIỂM SOÁT

Đàm Loan và Đạo Xước

Chương trình dịch

PETROVIETNAM Tóm tắt PHÁ SẢN DOANH NGHIỆP VÀ THI HÀNH LUẬT PHÁ SẢN Ở VIỆT NAM Phan Thị Mỹ Hạnh Viện Dầu khí Việt Nam Phá sản

Microsoft Word - Savico-FS2015-Consol-VN-Final

Microsoft Word - Chan_Ly_La_Dat_Khong_Loi_Vao doc

ch­ng1

Nhúng mã-cách khai báo biến Nhúng mã-cách khai báo biến Bởi: Khoa CNTT ĐHSP KT Hưng Yên Nhúng mã javascript trong trang HTML Bạn có thể nhúng JavaScri

Baøi Giaûng Ñaïo Kyû Nieäm Chuùa Gieâ-xu Bò Ñoùng Ñinh Treân Thaäp Giaù (2)

Phan-tich-va-de-xuat-mot-so-giai-phap-hoan-thien-cong-tac-quan-ly-du-an-dau-tu-xay-dung-cong-trinh-cua-tong-cong-ty-dien-luc-mien-nam.pdf

Kinh Niệm Phật Ba La Mật - 4

Luật kinh doanh bất động sản

Microsoft Word - QCHV 2013_ChinhThuc_2.doc

BỘ TÀI CHÍNH

Chuyển đổi tương tự - số photonic bằng cách dùng buồng cộng hưởng Fabry- Perot phi tuyến Chuyển đổi tương tự - số song song về mặt không gian được đề

Bản ghi:

Bởi: Trần Hạnh Nhi CÂY NHỊ PHÂN TÌM KIẾM Định nghĩa: (CNPTK) là cây nhị phân trong đó tại mỗi nút, khóa của nút đang xét lớn hơn khóa của tất cả các nút thuộc cây con trái và nhỏ hơn khóa của tất cả các nút thuộc cây con phải. Dưới đây là một ví dụ về cây nhị phân tìm kiếm: Nhờ ràng buộc về khóa trên CNPTK, việc tìm kiếm trở nên có định hướng. Hơn nữa, do cấu trúc cây việc tìm kiếm trở nên nhanh đáng kể. Nếu số nút trên cây là N thì chi phí tìm kiếm trung bình chỉ khoảng log 2 N. Trong thực tế, khi xét đến cây nhị phân chủ yếu người ta xét CNPTK. 1/8

CÁC THAO TÁC TRÊN CÂY NHỊ PHÂN TÌM KIẾM Duyệt cây Thao tác duyệt cây trên cây nhị phân tìm kiếm hoàn toàn giống như trên cây nhị phân. Chỉ có một lưu ý nhỏ là khi duyệt theo thứ tự giữa, trình tự các nút duyệt qua sẽ cho ta một dãy các nút theo thứ tự tăng dần của khóa. Tìm một phần tử x trong cây TNODE* searchnode(tree T, Data X){ if(t) { if(t->key == X) return T;if(T->Key > X) return searchnode(t->pleft, X);else return searchnode(t->pright, X); return NULL; Ta có thể xây dựng một hàm tìm kiếm tương đương không đệ qui như sau: 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; 2/8

Dễ dàng thấy rằng số lần so sánh tối đa phải thực hiện để tìm phần tử X là h, với h là chiều cao của cây. Như vậy thao tác tìm kiếm trên CNPTK có n nút tốn chi phí trung bình khoảng O(log 2 n). Ví dụ: Tìm phần tử 55 Thêm một phần tử x vào cây Việc thêm một phần tử X vào cây phải bảo đảm điều kiện ràng buộc của CNPTK. Ta có thể thêm vào nhiều chỗ khác nhau trên cây, nhưng nếu thêm vào một nút lá sẽ là tiện lợi nhất do ta có thể thực hiên quá trình tương tự thao tác tìm kiếm. Khi chấm dứt quá trình tìm kiếm cũng chính là lúc tìm được chỗ cần thêm. Hàm insert trả về giá trị 1, 0, 1 khi không đủ bộ nhớ, gặp nút cũ hay thành công: int insertnode(tree &T, Data X){ if(t) { if(t->key == X) return 0; //đã cóif(t->key > X) return insertnode(t->pleft, X);else return insertnode(t->pright, X); T = new TNode;if(T == NULL) return -1; //thiếu bộ nhớ T->Key >pright = NULL;return 1; //thêm vào thành công = X;T->pLeft =T- Ví dụ: Thêm phần tử 50 3/8

Hủy một phần tử có khóa x Việc hủy một phần tử X ra khỏi cây phải bảo đảm điều kiện ràng buộc của CNPTK. Có 3 trường hợp khi hủy nút X có thể xảy ra: X là nút lá. X chỉ có 1 con (trái hoặc phải). X có đủ cả 2 con Trường hợp thứ nhất: chỉ đơn giản hủy X vì nó không móc nối đến phần tử nào khác. Trường hợp thứ hai: trước khi hủy X ta móc nối cha của X với con duy nhất của nó. 4/8

Trường hợp cuối cùng: ta không thể hủy trực tiếp do X có đủ 2 con Þ Ta sẽ hủy gián tiếp. Thay vì hủy X, ta sẽ tìm một phần tử thế mạng Y. Phần tử này có tối đa một con. Thông tin lưu tại Y sẽ được chuyển lên lưu tại X. Sau đó, nút bị hủy thật sự sẽ là Y giống như 2 trường hợp đầu. Vấn đề là phải chọn Y sao cho khi lưu Y vào vị trí của X, cây vẫn là CNPTK. Có 2 phần tử thỏa mãn yêu cầu: Phần tử nhỏ nhất (trái nhất) trên cây con phải. Phần tử lớn nhất (phải nhất) trên cây con trái. Việc chọn lựa phần tử nào là phần tử thế mạng hoàn toàn phụ thuộc vào ý thích của người lập trình. Ở đây, cháng tôi sẽ chọn phần tử (phải nhất trên cây con trái làm phân tử thế mạng. Hãy xem ví dụ dưới đây để hiểu rõ hơn: 5/8

Sau khi hủy phần tử X=18 ra khỏi cây tình trạng của cây sẽ như trong hình dưới đây (phần tử 23 là phần tử thế mạng): Hàm delnode trả về giá trị 1, 0 khi hủy thành công hoặc không có X trong cây: int delnode(tree &T, Data X) { if(t==null) return 0;if(T->Key > X) return delnode (T->pLeft, X);if(T->Key < X) return delnode (T->pRight, X);else { //T->Key == X TNode* p = T;if(T->pLeft == NULL) T = T->pRight;else if(t->pright == NULL) T = T->pLeft;else { //T có cả 2 con TNode* q = T->pRight;searchStandFor(p, q); delete p; Trong đó, hàm searchstandfor được viết như sau: //Tìm phần tử thế mạng cho nút p 6/8

void searchstandfor(tree &p, TREE &q){ if(q->pleft) searchstandfor(p, q->pleft);else { p->key = q->key;p = q;q = q->pright; Tạo một cây CNPTK Ta có thể tạo một cây nhị phân tìm kiếm bằng cách lặp lại quá trình thêm 1 phần tử vào một cây rỗng. Hủy toàn bộ CNPTK Việc toàn bộ cây có thể được thực hiện thông qua thao tác duyệt cây theo thứ tự sau. Nghĩa là ta sẽ hủy cây con trái, cây con phải rồi mới hủy nút gốc. void removetree(tree &T) { if(t) { removetree(t->pleft); removetree(t->pright); delete(t); ĐÁNH GIÁ Tất cả các thao tác searchnode, insertnode, delnode trên CNPTK đều có độ phức tạp trung bình O(h), với h là chiều cao của cây Trong trong trường hợp tốt nhất, CNPTK có n nút sẽ có độ cao h = log 2 (n). Chi phí tìm kiếm khi đó sẽ tương đương tìm kiếm nhị phân trên mảng có thứ tự. 7/8

Tuy nhiên, trong trường hợp xấu nhất, cây có thể bị suy biến thành 1 DSLK (khi mà mỗi nút đều chỉ có 1 con trừ nút lá). Lúc đó các thao tác trên sẽ có độ phức tạp O(n). 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à log 2 (n). 8/8