Tổng quan về cây nhị phân

9 776 4
Tổng quan về cây nhị phân

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

Thông tin tài liệu

13 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 25 Các khái niệm và thuật ngữ cơ bản Các thuật ngữ liên quan ! Mức h của cây đầy đủ bậc d có d h nút ! VD. mức h=2 của cây bậc 3 có bao nhiêu nút ? ! h mức đầu tiên của cây đầy đủ bậc d có số nút là: ! 1 + d + d 2 + d 3 + … + d h-1 = (d h -1)/(d –1) ! 3 mức đầu tiên của cây bậc 3 có bao nhiêu nút ? Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 26 Tổng quan về cây nhị phân ! Định nghĩa ! Cách thức lưu trữ cây ! Các phương pháp duyệt cây 14 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 27 Tổng quan về cây nhị phân Định nghĩa ! Cây nhị phâncây có bậc = 2 * 0 / a b c d Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 28 Tổng quan về cây nhị phân Định nghĩa ! Độ cao của cây nhị phân có N nút: ! h T(max) = N ! h T(min) = [log 2 N] + 1 15 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 29 Tổng quan về cây nhị phân Định nghĩa ! Trắc nghiệm: Hãy vẽ tất cả các cây nhị phân có 3 nút ? Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 30 Tổng quan về cây nhị phân Cách thức lưu trữ cây ! Có 2 cách tổ chức cây nhị phân: ! Lưu trữ bằng mảng ! Lưu trữ bằng con trỏ cấu trúc 16 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 31 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng mảng * 0 / a b c d -1-1d6 -1-1c5 -1-1b4 -1-1a3 65/2 43-1 21*0 Con phảiCon tráiNút# Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 32 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng mảng // Định nghĩa các cấu trúc dữ liệu typedef struct tagBT_NODE { intData; intLeft;// chỉ số nút con trái intRight;// chỉ số nút con phải } BT_NODE;// binary tree node BT_NODE tree[N];// cây nhị phân có N nút 17 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 33 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng con trỏ Nút gốc của cây con trái Data pLeft pRight pRoot Count Nút gốc của cây con phải Data pLeftpRight Data pLeft pRight BT_NODE BIN_TREE Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 34 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng con trỏ // Định nghĩa các cấu trúc dữ liệu typedef struct tagBT_NODE { intData; tagBT_NODE*pLeft; // con trỏ đến nút con trái tagBT_NODE*pRight; // con trỏ đến nút con phải } BT_NODE;// binary tree node 18 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 35 Tổng quan về cây nhị phân Cách thức lưu trữ cây, sử dụng con trỏ // Định nghĩa các cấu trúc dữ liệu … (tiếp theo) typedef struct BIN_TREE { intCount; // Số nút trong cây BT_NODE*pRoot; // con trỏ đến nút gốc };// binary tree Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 36 Tổng quan về cây nhị phân Các phương pháp duyệt cây ! Có 3 cách duyệt cây: ! Duyệt gốc trước (Pre-Order) NLR ! Duyệt gốc giữa (In-Order) LNR ! Duyệt gốc sau (Post-Order) LRN 19 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 37 Tổng quan về cây nhị phân Các phương pháp duyệt cây void NLR(const BT_NODE *pCurr) { if (pCurr==NULL) return; “Xử lý nút gốc pCurr” NLR(pCurr->pLeft); NLR(pCurr->pRight); } Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 38 Tổng quan về cây nhị phân Các phương pháp duyệt cây Minh họa cách duyệt “gốc trước” 20 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 39 Tổng quan về cây nhị phân Các phương pháp duyệt cây void LNR(const BT_NODE *pCurr) { if (pCurr==NULL) return; LNR(pCurr->pLeft); “Xử lý nút gốc pCurr” LNR(pCurr->pRight); } Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 40 Tổng quan về cây nhị phân Các phương pháp duyệt cây void LRN(const BT_NODE *pCurr) { if (pCurr==NULL) return; LRN(pCurr->pLeft); LRN(pCurr->pRight); “Xử lý nút gốc pCurr” } 21 Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 41 Tổng quan về cây nhị phân Các phương pháp duyệt cây ! Trắc nghiệm: ! Cho biết kết quả duyệt cây biểu thức ở trang #27 theo mỗi cách NLR, LNR, LRN ? ! Viết thủ tục/hàm đếm số nút trong cây ? ! Viết thủ tục/hàm đếm số nút lá trong cây ? ! Viết thủ tục/hàm tính chiều cao của cây ? Spring 2004Data Structure & Algorithm -Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 42 Tổng quan về cây nhị phân Các phương pháp duyệt cây ! Trắc nghiệm: ! Viết giải thuật duyệt cây theo mức ? . Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 30 Tổng quan về cây nhị phân Cách thức lưu trữ cây ! Có 2 cách tổ chức cây nhị phân: ! Lưu trữ bằng mảng ! Lưu trữ bằng. Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 29 Tổng quan về cây nhị phân Định nghĩa ! Trắc nghiệm: Hãy vẽ tất cả các cây nhị phân có 3 nút ? Spring 2004Data Structure

Ngày đăng: 26/10/2013, 00:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan