SLIDE POWERPOINT
Nhóm: 14
Mơn: CTDL & GT
Giảng Viên: Trần Anh Tuấn
GIỚI THIỆU THÀNH VIÊN
TRẦN HỮU THANH THIÊN
- Soạn Word
- Chuẩn bị nội dung: Một số tính chất của cây nhị phân
- Thuyết trình phần: Một số tính chất của cây nhị phân
HUỲNH BẢO TOÀN
- Thiết kế powerpoint
- Chuẩn bị nội dung: Biểu diễn cây nhị phân
- Thuyết trình phần: Biểu diễn cây nhị phân
TRẦN MINH NGHĨA
- Chuẩn bị video
- Chuẩn bị nội dung: Duyệt cây nhị phân
- Thuyết trình phần: Duyệt cây nhị phân
NGUYỄN HẢI HỒ
- Soạn bài tập
- Chuẩn bị nội dung: Biểu diễn cây tổng quát bằng cây nhị
phân
- Thuyết trình phần : Biểu diễn cây tổng quát bằng cây nhị
phân
Cây
Nhị Phân
(binary tree)
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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
02
04
Biểu diễn cây tổng quát bằng cây nhị
phân
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
-
Cây nhị phân là tập hợp các nút (node) chứa giá trị liên kết với nhau theo quan
hệ cha - con (lần lượt theo chiều mũi tên như hình vẽ) sao cho mỗi nút không
quá 2 nút con.
-
Nút gốc là nút không là con của bất kỳ của nút nào, là nút bắt đầu của cây nhị
phân, từ đó cây nhị phân mở rộng ra.
Khái Niệm
01
-
Nút trong là nút có con, bất kể 1 hoặc 2 nút con.
-
Nút lá là nút khơng có nút con nào.
- Mỗi nút trong cây cùng với những nút phía dưới nó tạo thành một cây con.
- Không giống như Mảng, Danh sách liên kết, Ngăn xếp và hàng đợi, là cấu trúc dữ
liệu tuyến tính, cây là cấu trúc dữ liệu phân cấp.
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
- 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
Tính chất
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).
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
02
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Thao táo dữ liệu phân cấp
Làm cho thông tin dễ dàng tìm kiếm
Các ứng dụng
chính của cây
Hình thức ra quyết định nhiều giai
đoạn
Các thuật toán của bộ định tuyến
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
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Biểu diễn cây nhị phân
Biểu diễn
03
Có 2 cách biểu diễn:
-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ỏ
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Biểu diễn cây nhị phân bởi mảng
03
- 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
mảng này
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
03
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Ví dụ:
1
A
3
2
B
C
4
D
5
E
6
F
Info
A
Left
2
Right
3
B
4
5
C
0
6
D
0
0
E
0
0
F
0
0
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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
};
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Biểu diễn cây nhị phân con trỏ
03
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
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
A
B
●
●
C
●
D
A
E
B
●
C
F
D
E
Ví dụ:
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
F
●
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
03
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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;
}
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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;
}
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
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;
}
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
5- Kiểm tra nút lá
Nếu một nút là nút lá thì nó khơng có con, Khi đó con trái và con phải của nó
cùng bằng NULL.
Int isLeaf( bTree2 T)
{
if( T!= NULL)
return( leftChild(T)==NULL)&&(rightChild(T)==NULL);
else return NULL;
}
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
6- Xác định số nút của cây
Để xác định số nút của cây ta thực hiện như sau: kiểm tra cây, nếu cây rỗng thì
khơng có nút nào trên cây, nếu cây khác rỗng thì trả về số nút trên cây bằng 1 (nút
gốc) cộng với số nút của cây con bên trái và cộng với số nút của cây con bên phải
Int numberNodes (bTree2 T)
{
if ( emptyTree(T) ) return 0;
else return 1+numberNodes (leftChild(T))+ numberNodes (rightChild(T));
}
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
7- Tạo cây mới từ hai cây có sẵn
Cho hai cây con a, b và x là giá trị bất kì. Hãy tạo một cây nhị phân có gốc lưu x
và a, b là hai cây con trái, phải của gốc này
Cách giải: + Yêu cầu máy tính cấp phát bộ nhớ để làm gốc của cây
+ Đổ x vào ngăn data của ô nhớ vừa cấp phát
+ Gắn a, b tương ứng vào nhánh trái, phải của gốc
bTree2 create2(Tdata x, bTree2 a, bTree2 b)
{
bTree2 N;
N=(Tnode*)malloc(sizeof(Tnode));
N->Data=x;
N->left=a;
N->right=b; return N; }
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
8- Tìm nút có nội dung là x trên cây nhị phân
Để tìm nút có nội dung x trên cây nhị phân ta tiến hành kiểm tra từ nút gốc, nếu
nút gốc có nội dung là x thì nút gốc chính là nút cần tìm. Nếu nút gốc bằng
NULL ( cây rỗng ) thì khơng có nút nào có nội dung là x trên cây. Nếu nội
dung nút gốc khác x và nút gốc khác NULL thì ta lần lượt thực hiện phép tốn
tìm kiếm trên nhánh cây con bên trái và cây con bên phải của cây đó
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan
Duyệt cây là gì?
Duyệt cây là một tiến trình để truy cập tất cả các nút của một cây và cũng có
thể in các giá trị của các nút này. Bởi vì tất cả các nút được kết nối thơng
qua các cạnh (hoặc các link), nên chúng ta luôn luôn bắt đầu truy cập từ nút
Duyệt cây
nhị phân
04
gốc. Do đó, chúng ta không thể truy cập ngẫu nhiên bất kỳ nút nào trong
cây. Có ba phương thức mà chúng ta có thể sử dụng để duyệt một cây:
• Duyệt tiền thứ tự (Pre-order Traversal)
• Duyệt trung thứ tự (In-order Traversal)
• Duyệt hậu thứ tự (Post-order Traversal)
Cay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phanCay.Nhi.Phan.(binary.tree).Mot.so.tinh.chat.cua.cay.nhi.phan.Bieu.dien.cay.nhi.phan.Bieu.dien.cay.tong.quat.bang.cay.nhi.phan