Tải bản đầy đủ (.docx) (58 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 (1.16 MB, 58 trang )

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


×