1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5.2 - ThS. Nguyễn Hà Giang

46 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cấu trúc cây
Tác giả Nguyễn Hà Giang
Người hướng dẫn ThS. Nguyễn Hà Giang
Trường học Hutech
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại bài giảng
Năm xuất bản 2008
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 46
Dung lượng 10,04 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 5.2: Tree structure. Những nội dung chính được trình bày trong chương này gồm có: Cấu trúc cây, cây nhị phân, cây nhị phân tìm kiếm, cây nhị phân tìm kiếm cân bằng AVL. Mời các bạn cùng tham khảo.

Trang 1

Tree Structure

ThS Nguyễn Hà Giang

Trang 2

Nội dung

Cấu trúc cây

 Cây nhị phân

 Cây nhị phân tìm kiếm

 Cây nhị phân tìm kiếm cân bằng AVL

Trang 3

Cấu trúc dữ liệu

Trang 4

Cấu trúc cây

 Tập hợp các nút và cạnh nối các nút đó

 Có một nút gọi là gốc

 Quan hệ one-to-many giữa các nút

 Có duy nhất một đường đi từ gốc đến một nút

 Các loại cây:

 Nhị phân: mỗi nút có {0,1, 2} nút con

 Tam phân: mỗi nút có {0,1,2,3} nút con

 n-phân: mỗi nút có {0,1, ,n} nút con

Trang 5

Cấu trúc cây

Sao trong máy tính, cây lại thể hiện ngược?

Trang 6

Khái niệm

J

DR

B

LF

AK

Q

nút gốc

Cạnh

Trang 7

Khái niệm

 Thuật ngữ

 Nút gốc: không có nút cha

 Nút lá: không có nút con

 Nút trong: không phải nút con và nút gốc

 Chiều cao: khoảng cách từ gốc đến lá

Chiều caoNút gốc

Nút trong

Trang 8

Khái niệm

RootNode A

Node H

Node B

Node GNode F

Node ENode D

Node C

Node KNode J

Node LNode I

Trang 9

Nội dung

 Cấu trúc cây

Cây nhị phân

 Cây nhị phân tìm kiếm

 Cây nhị phân tìm kiếm cân bằng AVL

Trang 10

Binary Tree

 Cấu trúc cây đơn giản nhất

 Tại mỗi nút gồm các 3 thành phần

 Phần data: chứa giá trị, thông tin…

 Liên kết đến nút con trái (nếu có)

 Liên kết đến nút con phải (nếu có)

 Cây nhị phân có thể rỗng (ko có nút nào)

 Cây NP khác rỗng có 1 nút gốc

 Có duy nhất 1 đường đi từ gốc đến 1 nút

 Nút không có nút con bên trái và con bên phải là nút lá

Trang 12

Binary Tree

 Cây nhị phân đúng:

 Nút gốc và nút trung gian có đúng 2 con

 Cây nhị phân đúng có n nút lá thì số nút trên cây 2n-1

A

Trang 13

Binary Tree

 Cây nhị phân đầy đủ với chiều sâu d

 Phải là cây nhị phân đúng

Trang 14

Binary Tree

 Duyệt cây:

 Do cây là cấu trúc ko tuyến tính

 3 cách duyệt cây NP

 Duyệt theo thứ tự trước PreOrder: NLR

 Duyệt theo thứ tự giữa InOrder: LNR

 Duyệt theo thứ tự sau PostOrder: LRN

Trang 16

Binary Tree

 Cài đặt cây NP dùng liên kết

typedef struct node

{

DataType info;

struct node * left;

struct node * right;

} NODE;

typedef NODE * NodePtr;

Cấu trúc của một nút

Chứa thông tin của nút

Trỏ đến nút con tráiTrỏ đến nút con phải

Trang 17

pTree

Con trỏ pTree trỏ

đến nút gốc của cây

Trang 20

Binary Tree

 InsertLeft: thêm nút con bên trái nút p

int InsertLeft(NodePtr p, int x)

{

if (p == NULL) return FALSE;

if (p->left != NULL) return FALSE;

p->left = CreateNode(x);

return TRUE;

}

Trang 21

Binary Tree

 InsertRight: thêm một nút con bên phải p

int InsertRight(NodePtr p, int x)

{

if (p == NULL) return FALSE;

if (p->right != NULL) return FALSE;

p->right = CreateNode(x);

return TRUE;

}

Trang 23

Binary Tree

 PreOrder: xuất theo thứ tự trước

void PreOrder(NodePtr pTree)

{

if (pTree != NULL){

printf(“%d ”, pTree->info);

PreOrder(pTree->left);

PreOrder(pTree->right);

}}

Trang 24

printf(“%d ”, pTree->info);

InOrder(pTree->right);

}}

Trang 25

PostOrder(pTree->right);

printf(“%d ”, pTree->info);

}}

Trang 26

if (pTree == NULL) return NULL;

if (pTree->info == x) return pTree;

Trang 27

ClearTree(pTree->right);

FreeNode(pTree);

}}

Trang 28

 Xác định độ sâu/chiều cao của cây

 Tìm giá trị nhỏ nhất/lớn nhất trên cây

 Tính tổng các giá trị trên cây

 Đếm số nút có giá trị bằng x

Trang 29

Nội dung

 Cấu trúc cây

 Cây nhị phân

Cây nhị phân tìm kiếm

 Cây nhị phân tìm kiếm cân bằng AVL

Trang 30

Binary Search Tree

 BST là cây nhị phân mà mỗi nút thoả

 Giá trị của tất cả nút con trái < nút gốc

 Giá trị của tất cả nút con phải > nút gốc

5 3

10

Trang 31

Binary Search Tree

25 45

Trang 32

Binary Search Tree

Trang 33

Binary Search Tree

Trang 34

Binary Search Tree

Trang 35

Binary Search Tree

 Thời gian tìm kiếm

 Dựa trên chiều cao của cây

Trang 36

Binary Search Tree

 Search

 Xuất phát từ gốc

 Nếu nút = NULL => ko tìm thấy

 Nếu khoá x = khóa nút gốc => tìm thấy

 Ngược lại nếu khoá x < khoá nút gốc => Tìm trên cây bên trái

 Ngược lại => tìm trên cây bên phải

Trang 37

Binary Search Tree

Trang 38

Binary Search Tree

 Xây dựng cây BST

 Chèn

 Xóa

 Luôn duy trì tính chất

 Giá trị nhỏ hơn ở bên cây con trái

 Giá trị lớn hơn ở bên cây con phải

Trang 39

Binary Search Tree

 Insert

 Thực hiện tìm kiếm giá trị x

 Tìm đến cuối nút Y ( nếu x ko

tồn tại trong cây)

 Nếu x < y, thêm nút lá x bên trái

Trang 40

Binary Search Tree

void Insert(NodePtr pTree, int x) {

Insert(pTree->left, x);

} else

if (pTree->right == NULL) {

node = CreateNode(x);

pTree->right = node;

} else

Insert(pTree->right, x);

}

Trang 41

Binary Search Tree

 Delete: xóa nhưng phải đảm bảo vẫn là cây BST

 Thực hiện tìm nút có giá trị x

 Nếu nút là lá, delete nút

 Ngược lại

 Thay thế nút bằng một trong hai nút sau

 Y là nút lớn nhất của cây con bên trái

 Z là nút nhỏ nhất của cây con bên phải

 Delete nút Y hoặc Z đã thay thế giá trị tương ứng

Trang 42

Binary Search Tree

Trang 43

 Trường hợp 2: p chỉ có 1 cây con, chọn nút

con làm nút thế chỗ nút cha, sau đó xóa nút

Trang 44

Binary Search Tree

 Trường hợp 3: nút p có 2 cây con, chọn nút

thay thế theo 1 trong 2 cách như sau

 Nút lớn nhất trong cây con bên trái

 Nút nhỏ nhất trong cây con bên phải

Trang 45

Binary Search Tree

Trang 46

Binary Search Tree

Ngày đăng: 11/05/2021, 03:43

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm