SLIDE POWERPOINT
Nhóm: 14
Mơn: CTDL & GT
Giảng Viên: Trần Anh Tuấn
TIEU LUAN MOI download : moi nhat
GIỚI THIỆU THÀNH VIÊN
TRẦN HỮU THANH THIÊN
HUỲNH BẢO TOÀN
TRẦN MINH NGHĨA
NGUYỄN HẢI HỒ
TIEU LUAN MOI download : moi nhat
Cây
Nhị Phân
(binary tree)
TIEU LUAN MOI download : moi nhat
01
Khái niệm
Một số tính chất của cây nhị phân
03
Biểu diễn cây nhị phân
Duyệt cây nhị phân
05
Biểu diễn cây tổng quát bằn
phân
TIEU LUAN MOI download : moi nhat
Khái Niệm
liệu tuyến tính, cây là cấu trúc dữ liệu phân cấp.
TIEU LUAN MOI download : moi nhat
ính chất
-
Lưu trữ thông tin tạo thành một hệ thống phân cấp một cách tự
nhiên
-
Cung cấp khả năng truy cập, tìm kiếm vừa phải (nhanh hơn danh
sách liên kết và chậm hơn so với mảng)
02 - Cung cấp khả năng chèn xoá vừa phải (nhanh hơn mảng chậm
hơn danh sách liên kết khơng có thứ tự)
-
Khơng có giới hạn về số lượng nút vì các nút được liên kết bằng
cách sử dụng con trỏ (giống danh sách liên kết và không giống
mảng).
TIEU LUAN MOI download : moi nhat
Các dạng cây nhị phân đặc biệt
-
Cây lệch trái
-
Cây lệch phải
-
Cây zic-zắc
TIEU LUAN MOI download : moi nhat
Các dạng cây nhị phân suy biến
-
Cây nhị phân hoàn chỉnh: Các nút ứng với các mức trừ mức gần mức
cuối cùng đều có 2 con
-
Cây nhị phân đầy đủ: Các nút có bậc tối đa ở mọi mức kể cả mức gần
mức cuối cùng
02
TIEU LUAN MOI download : moi nhat
Làm cho thơng tin dễ dàng tìm kiếm
Thao táo dữ liệu phân cấp
Hình thức ra quyết định nhiều giai
đoạn
Các thuật tốn của bộ định tuyến
Các ứng dụng
chính của cây
Thao tác với danh sách dữ liệu đã
được sắp xếp
Là một quy trình làm việc để tổng hợp các
hình ảnh kỹ thuật số cho các hiệu ứng hình
ảnh
TIEU LUAN MOI download :
moi nhat
Biểu diễn cây nhị phân
Có 2 cách biểu diễn:
Biểu diễn
03
-Biểu diễn cây nhị phân bởi mảng
-Biểu diễn cây nhị phân bằng con trỏ
TIEU LUAN MOI download : moi nhat
Biểu diễn cây nhị phân bởi mảng
- Mô tả dạng biểu diễn:
Cây sau khi biểu diễn được xem như một mảng các
nút (đỉnh)
Mỗi nút (đỉnh) là một bản ghi gồm 3 trường: info, left,
right Info: lưu giá trị của đỉnh
Left: con trái của đỉnh (lưu ID)
Right: con phải của đỉnh (lưu ID)
Thực hiện các thao tác trên cây là thực hiện các thao tác trên
•
•
03
mảng này
TIEU LUAN MOI download : moi nhat
Ví dụ:
Info
A
A
1
B
3
2
B
C
C
4
D
D
5
E
6
F
E
F
TIEU LUAN MOI download :
moi nhat
Cú Pháp Biểu Diễn
#define N <MaxNode>
typedef struct
{
item Infor;
int left;
int right;
} Node;
typedef struct binaryTree1
{
Node Elements [N] ;
int count; // số đỉnh thực tế của cây
};
TIEU LUAN MOI download : moi nhat
Biểu diễn cây nhị phân con trỏ
Ngoài cách cài đặt cây nhị phân bởi mảng, chúng ta cịn có thể sử
dụng con trỏ để cài đặt cây nhị phân. Trong cách này mỗi bản ghi
biểu diễn một đỉnh của cây chứa hai con trỏ: con trỏ trái (left) trỏ
tới đỉnh con trái, con trỏ phải (right) trỏ tới đỉnh con phải
03
TIEU LUAN MOI download : moi nhat
A
B
●
C
●
D
E
B
●
C
F
D
E
F
●
Ví dụ:
TIEU LUAN MOI download :
moi nhat
Cú Pháp Biểu Diễn
typedef struct Node
{
item Infor;
Node *pLeft; // con trỏ đến nút con trái
Node *pRight; // con trỏ đến nút con phải
}
typedef struct Node *bTree2
TIEU LUAN MOI download : moi nhat
03 Các phép toán cơ bản trên cây nhị phân
1- Tạo cây rỗng
2- Kiểm tra cây rỗng
3- Xác định con trái của một nút được trỏ bởi p
4- Xác định con phải của một nút được trỏ bởi p
5- Kiểm tra nút lá
6- Xác định số nút của cây
7- Tạo cây mới từ hai cây có sẵn
8- Tìm một đỉnh có khóa x trên cây
TIEU LUAN MOI download : moi nhat
03
1- Tạo cây rỗng
Cây rỗng là một cây không chứa nút nào cả. Như vậy khi tạo cây rỗng ta
chỉ cần cho con trỏ quản lí gốc của cây (T) trỏ tới giá trị NULL
Void makeNullTree(bTree2 *T )
{
*(T) = NULL;
}
TIEU LUAN MOI download : moi nhat
2- Kiểm tra cây rỗng
Để kiểm tra có phải cây rỗng hay không ta chỉ cần kiểm tra xem trên cây có
nút nào khơng, nếu khơng trả về True ngược lại trả về False. Ở đây ta kiểm tra
biến T có bằng NULL khơng
Int emptyTree(bTree2 T )
{
return T== NULL;
}
TIEU LUAN MOI download : moi nhat
3- Xác định con trái của một nút
Để xác định con trái của một nút bất kỳ trên cây đầu tiên ta kiểm tra xem cây có
rỗng hay khơng, nếu cây khác rỗng thì trả về nút con trái của nút cần tìm cịn
nếu cây rỗng thì trả về giá trị NULL
bTree2 leftChild(bTree2 T)
{
if ( T!=NULL ) return T->left;
else return NULL;
}
TIEU LUAN MOI download : moi nhat