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

Cây Nhị Phân (binary tree) Một số tính chất của cây nhị phân Biểu diễn cây nhị phân Biểu diễn cây tổng quát bằng cây nhị phân

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 (815.03 KB, 49 trang )

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


×