Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.1 MB, 123 trang )
Binary Search Tree – Ví dụ
57
Chương 7: Cây (Tree)
Binary Search Tree – Ví dụ
58
Chương 7: Cây (Tree)
Binary Search Tree – Biểu diễn
59
Cấu trúc dữ liệu của CNPTK là cấu trúc dữ
liệu biểu diễn cây nhị phân nói chung
(???)
Thao tác duyệt cây trên CNPTK hoàn toàn
giống như trên cây nhị phân
Chú ý: 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
Chương 7: Cây (Tree)
Binary Search Tree – Duyệt cây
60
Duyệt giữa trên CNPTK
25
10
37
3
18
1
6
5
12
29
20
13
50
35
41
32
Duyệt inorder: 1 3 5 6 10 12 13 18 20 25 29 32 35 37 41 50
Chương 7: Cây (Tree)
Binary Search Tree – Duyệt cây
61
Duyệt sau trên CNPTK
25
10
37
3
18
1
6
5
12
29
20
13
50
35
41
32
Duyệt postorder: 1 5 6 3 13 12 20 18 10 32 35 29 41 50 37 25
Chương 7: Cây (Tree)
Binary Search Tree – Duyệt cây
62
Duyệt trước trên CNPTK
25
10
37
3
18
1
6
5
12
29
20
13
50
35
41
32
Duyệt preorder: 25 10 3 1 6 5 18 12 13 20 37 29 35 32 50 41
Chương 7: Cây (Tree)
Binary Search Tree – Tìm kiếm
63
25
Tìm kiếm trên CNPTK
10
37
3
18
1
6
5
12
29
20
13
50
35
41
32
Node gốc nhỏ hơn
Giốngnhau
lớn
Khác nhau hơn
Tìm kiếm 13
Chương 7: Cây (Tree)
Tìm thấy
Số node duyệt: 5
Binary Search Tree – Tìm kiếm
64
25
Tìm kiếm trên CNPTK
10
37
3
18
1
6
5
12
29
20
13
50
35
41
32
Khác nhau
Node gốc nhỏ hơn
lớn hơn
Tìm kiếm 14
Chương 7: Cây (Tree)
Không tìm thấy
Số node duyệt: 5
Binary Search Tree – Tìm kiếm
65
Tìm một phần tử x trong CNPTK (dùng đệ quy):
TNode* searchNode(Tree T, DataType X)
{
if (T)
{
if(T->data ==X)
return T;
if(T->data >X)
return searchNode(T->pLeft, X);
return searchNode(T->pRight, X);
}
return NULL;
}
Chương 7: Cây (Tree)
Binary Search Tree – Tìm kiếm
66
Tìm một phần tử x trong CNPTK (dùng vòng lặp):
TNode* searchNode(Tree T, DataType x)
{
TNode *p = T;
while (p != NULL)
{
if(x == p->data)
return p;
else if(x < p->data) p = p->pLeft;
else p = p->pRight;
}
return NULL;
}
Chương 7: Cây (Tree)
Binary Search Tree – Tìm kiếm
67
Nhận xét:
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(log2n)
Chương 7: Cây (Tree)