Tổng quan về cây nhị phân Các phương pháp duyệt cây void NLRconst BT_NODE *oCurr a Processing order “Xu ly nut sốc pCurr” NLRpCurr->pLeft; NLRpCurr->pRight; ac ac _.
Trang 1Các khái niệm và thuật ngữ cơ bản
Các thuật ngữ liên quan
! Mức jh của cây đây đủ bậc đ có đ# nút
I 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 đ có sô nút
là:
! 3 mức đâu tiên của cây bậc 3 có bao nhiêu nút ?
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 25
Tổng quan về cây nhị phân
!_ Định nghĩa
! Cach thức lưu trữ cây
!_ Các phương pháp duyệt cây
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 26
13
Trang 2Tổng quan về cây nhị phân
Định nghĩa
!_ Cây nhị phân là cây có bậc = 2
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 27
Tổng quan về cây nhị phân
Định nghĩa
! Độ cao của cây nhị phân có N nút:
hT(max =N
! Brưmm = [logaN] + l
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 28
14
Trang 3Tổ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 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 29
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
| Luu tri bằng con trỏ cấu trúc
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 30
15
Trang 4Tổng quan về cây nhị phân
Cách thức lưu trữ cây, sử dụng mảng
# |Nut |Con trai | Con phai
0 * 1 2
1 3 4
2 / 5 6
3 a -| -]
4 b -1 -1
5 C -1 -]
6 d -1 -1
Spring 2004 Data 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
// Định nghĩa các cầu trúc dữ liệu
typedef struct tagBT_NODE {
int Data;
int Right; // chỉ số nút con phải
} BT_NODE; // binary tree node
BT_NODE tree[Nl; // cây nhị phân có N nút
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 32
16
Trang 5Tổng quan về cây nhị phân
Cách thức lưu trữ cây, sử dụng con trỏ
BIN_TREE
pRoot Go Count
Data
Nút gốc của Nút gốc của
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH 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ỏ
// Định nghĩa các cầu trúc dữ liệu
typedef struct tagBT_NODE {
int Data;
tagBT_NODE *pLeft; // con trỏ đến nút con trái
tagBT_NODE *pRight; // con tré dén nut con phai
} BT_NODE; // binary tree node
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 34
L7
Trang 6Tổ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 {
int Count; // Số nút trong cây
BT NODE *pRoot; // con trỏ đến nút gốc
h // binary tree
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 35
Tổng quan về cây nhị phân
Các phương pháp duyệt cây
I Có 3 cách duyệt cay:
! Duyệt gốc trước (Pre-Order) NLR
! Duyệt gốc giữa (In-Order) LNR
! Duyệt sỐc sau (Post-Order) LRN
€ 1» €2>D € 33
PS ar Pe
< oe NAN 2 is fs ` 5 ) a) ⁄*x
Lett Right Left Right Left Right
subtree subtree subtree subtree subtree subtree
(a) Preorder traversal (b)Inordertraversal (c) Postorder traversal
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 36
18
Trang 7Tổng quan về cây nhị phân
Các phương pháp duyệt cây
void NLR(const BT_NODE
*oCurr)
(a) Processing order
“Xu ly nut sốc pCurr”
NLR(pCurr->pLeft);
NLR(pCurr->pRight); ac ac
_
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 37
Tổng quan về cây nhị phân
› CŨ- = JES 2
(a) Process tree A 1¬ (b) Process tree B
Cs tr JS
c5 D3 t “œ2 oD Py
(c) Process tree C " (d) Process tree D
(e) Process tree E (f) Process tree F
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 38
19
Trang 8Tổng quan về cây nhị phân
Các phương pháp duyệt cây
void LNR(const BT_NODE
*DCurr)
22 @
(b) “Walking” order
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 39
Tổng quan về cây nhị phân
Các phương pháp duyệt cây
void LRN(const BT_NODE
*DCuTT) C2 s4
(a) Processing order
LRN(pCurr->pLeft); 4
8
LRN(pCurr->pRight);
(b) “Walking” order Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 40
20
Trang 9Tổ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 moi cach NLR, LNR, LRN 2
| Viét tht tuc/ham dém số nút trong cây ?
| Viét tht tuc/ham dé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 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH 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:
!_ Viết giải thuật duyệt
cây theo mức ?
(a) Processing order
(b) “Walking” order
Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 42
21