Tải bản đầy đủ (.pdf) (12 trang)

Tài liệu Cấu trúc dữ liệu nâng cao P4 pptx

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 (1.02 MB, 12 trang )


1
Bài 4:CÂY, CÂY NHỊ PHÂN, CÂY NHỊ PHÂN TÌM KIẾM
1. Cấu trúc cây
1.1. Định nghĩa 1:
Cây là một tập hợp T các phần tử (nút trên cây) trong đó có 1 nút đặc
biệt T0 được gọi là gốc, các nút còn khác được chia thành những tập rời
nhau T1, T2 , ... , Tn theo quan hệ phân cấp trong đó Ti cũng là một cây.
Nút ở cấp i sẽ quản lý một số nút ở cấp i+1. Quan hệ này người ta còn
gọi là quan hệ cha-con.
1.2. Một số khái niệm cơ bản
- Bậc của một nút: là số cây con của nút đó .
- Bậc của một cây: là bậc lớn nhất của các nút trong cây. Cây có bậc n thì
gọi là cây n-phân.
- Nút gốc: nút không có nút cha.
- Nút lá: nút có bậc bằng 0 .
- Nút nhánh: nút có bậc khác 0 và không phải là gốc .
- Mức của một nút:
Mức (T0 ) = 1.
Gọi T1, T2, T3, ... , Tn là các cây con của T0
Mức (T1) = Mức (T2) = ... = Mức (Tn) = Mức (T0) + 1.
- Độ dài đường đi từ gốc đến nút x: là số nhánh cần đi qua kể từ gốc đến x.
- Chiều cao h của cây: mức lớn nhất của các nút lá.

1.3. M
ột số ví dụ về đối tượng các cấu trúc dạng cây
- Sơ đồ tổ chức của một doanh nghiệp
- Sơ đồ tổ chức cây thư mục


2




2.
C
2.1 Đ

dướ
i
CÂY NHỊ P
Định ngh
Cây nhị p

Cây nhị
i đây cho ta

PHÂN
hĩa
phân là cây
phân có th
a hình ảnh
y mà mỗi nú
hể ứng dụn
h của một b
3
út có tối đa

ng trong nh
biểu thức to

a 2 cây con

hiều bài toá
oán học:
n
án thông dụụng. Ví dụụ

4

2.2. Một số tính chất của cây nhị phân:
- Số nút ở mức I ≤ 2
I-1
.
- Số nút ở mức lá ≤ 2
h-1
, với h là chiều cao của cây.
- Chiều cao của cây h ≥ log
2
N
(N - số nút trên trong cây).


2.3. Biểu diễn cây nhị phân T
Cây nhị phân là một cấu trúc bao gồm các phần tử (nút) được kết nối
với nhau theo quan hệ “cha-con” với mỗi cha có tối đa 2 con. Để biểu diễn
cây nhị phân ta chọn phương pháp cấp phát liên kết. Ứng với một nút, ta
dùng một biến động lưu trữ các thông tin:
+ Thông tin lưu trữ tại nút.
+ Địa chỉ nút gốc của cây con trái trong bộ nhớ.
+ Địa ch
ỉ nút gốc của cây con phải trong bộ nhớ.
Khai báo như sau:

typedef struct tagTNODE
{
Data Key;//Data là kiểu dữ liệu ứng với thông tin lưu tại nút
struct tagNODE *pLeft, *pRight;

5
}TNODE;
typedef TNODE *TREE;
2.4. Các thao tác trên cây nhị phân
Thăm các nút trên cây theo thứ tự trước (Node-Left-Right)
void NLR(TREE Root)
{
if (Root != NULL)
{
<Xử lý Root>; //Xử lý tương ứng theo nhu cầu
NLR(Root->pLeft);
NLR(Root->pRight);
}
}
Thăm các nút trên cây theo thứ tự giữa (Left- Node-Right)
void LNR(TREE Root)
{
if (Root != NULL)
{
LNR(Root->Left);
<Xử lý Root>; //Xử lý tương ứng theo nhu cầu
LNR(Root->Right);
}
}
Thăm các nút trên cây theo thứ tự sau (Left-Right-Node)

void LRN(TREE Root)
{

×