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

Chương 4: Cấu trúc cây ppt

54 444 1
Tài liệu đã được kiểm tra trùng lặp

Đ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 ppt
Trường học Trường Đại học Công Nghệ Thông Tin - ĐHQG Hà Nội
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài giảng
Thành phố Hà Nội
Định dạng
Số trang 54
Dung lượng 259 KB

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

Nội dung

4.1.7 Phép duyệt cây  Là phép thăm các nút trong cây một cách hệ thống sao cho tất cả các nút đều được thăm và được thăm đúng một lần  Có 3 cách duyệt cây cơ bản :  Duyệt cây theo th

Trang 1

Chương 4

CẤU TRÚC CÂY

Trang 2

NỘI DUNG

Các khái niệm cơ bản

Cây nhị phân

Cây tổng quát

Trang 3

4.1 CÁC KHÁI NIỆM CƠ BẢN

Định nghĩa cây

Cấp của cây

Mức của cây

Đường đi và độ dài đường đi trong cây

Độ cao, độ sâu của nút trong cây

Thứ tự các nút trong cây

Phép duyệt cây

Trang 4

4.1.1 Định nghĩa cây

Cây là tập hợp hữu hạn các nút trong đó có một nút đặc biệt gọi là gốc của cây(root) Các nút có mối quan hệ

phân cấp gọi là quan hệ ‘’cha-con’’

Định nghĩa đệ qui về cây

Một nút là một cây gốc của cây chính là nút đó.

Giả sử T 1 , T 2 , …, T n (n 1) là các cây có gốc tương

ứng r 1 , r 2 ,…, r n Khi đó cây T với gốc r được hình thành bằng cách cho r trở thành nút cha của các nút r 1 , r 2 ,

…, r n

Trang 6

4.1.2 Cấp của cây

Cấp của nút trong cây là số con của nút

Cấp của cây: Là cấp cao nhất của nút có trong cây.

Cây có cấp n thì gọi là cây n - phân

Trang 7

4.1.3 Mức của cây

Gốc của cây có mức là 1

Cha có mức là i thì con có mức là i+1

Mức của cây là mức cao nhất của nút có trong cây

Trang 8

4.1.4 Đường đi và độ dài đường đi

Dãy các nút n 1 , n 2 , , n k được gọi là một đường đi trong cây T nếu n i là cha của n i+1 (1 i < k) có độ dài là k-1

Nếu có một đường đi từ A đến B trong cây T thì A được gọi là tiền thân của B, B được gọi là hậu thế của A

Trong một cây, gốc là nút không có tiền thân, lá là nút không có hậu thế

Trang 9

4.1.5 Độ cao và độ sâu của nút

Độ cao của một nút trong cây là số nút trong đường đi dài nhất từ nút đó tới lá

Độ cao của cây là độ cao của nút gốc

Độ sâu của một nút trong cây là số nút trong đường đi

từ gốc tới nút đó

Trang 10

4.1.6 Thứ tự các nút trong cây

Trong cây nếu nút n có các con là n 1, n 2 , , n k thì

n i (1<=i<=k) là các nút anh em

n 1 là con bên trái cùng hay con trưởng

n k là con bên phải cùng hay con út

n i (1<=i<k) là anh em liền kề bên trái của n i+1

n i (1<i<=k) là anh em liền kề bên phải của n i-1

Trang 12

4.1.7 Phép duyệt cây

Là phép thăm các nút trong cây một cách hệ thống sao cho tất cả các nút đều được thăm và được thăm đúng một lần

Có 3 cách duyệt cây cơ bản :

Duyệt cây theo thứ tự trước (preorder)

Duyệt cây theo thứ tự giữa (inorder)

Duyệt cây theo thứ tự sau (postorder )

Trang 13

4.1.7 Phép duyệt cây

Duyệt cây theo thứ tự trước (preorder)

Nếu cây khác rỗng

Thăm gốc

Duyệt cây con trái cùng theo thứ tự trước

Duyệt các cây con còn lại theo thứ tự trước

Trang 15

4.1.7 Phép duyệt cây

Duyệt cây theo thứ tự sau (postorder)

Nếu cây khác rỗng

Duyệt cây con trái cùng theo thứ tự sau

Duyệt các cây con còn lại theo thứ tự sau

Thăm gốc

Trang 16

4.1.7 Phép duyệt cây

Thứ tự trước : ABEFGCHDIKThứ tự giữa : EBFGAHCIDKThứ tự sau : EFGBHCIKDA

A

K I

H G

F E

Trang 17

4.1.8 Cây gán nhãn và cây biểu thức

Cây gán nhãn : Mỗi nút trong cây được gán với một

nhãn

Cây biểu thức : Mỗi nút trong cây được gán với một

thành phần của biểu thức theo cách

Mỗi nút lá được gán với một toán hạng

Mỗi nút trong được gán với một toán tử

Trang 18

4.1.8 Cây gán nhãn và cây biểu thức

Ví dụ cây biểu thức P = a*(b - c) + d/e

Duyệt theo thứ tự trước : + * a - b c / d e

Duyệt theo thứ sau : a b c - * d e / +

Trang 19

4.1.8 Cây gán nhãn và cây biểu thức

Thuật toán định giá biểu thức dạng tiền tố

Khởi tạo : Sử dụng ngăn xếp rỗng

Bước 1 : Đọc từng thành phần của biểu thức tiền tố

Nếu là toán tử đẩy toán tử vào ngăn xếp Nếu là toán hạng xét phần tử đỉnh của ngăn xếp, nếu là toán tử thì đẩy toán hạng vào, nếu là toán hạng thì lấy ra cùng với một toán tử thực hiện phép toán rồi xét phần tử đỉnh.

Trang 20

4.1.8 Cây gán nhãn và cây biểu thức

a*kq1

=kq2

d / kq2 +

d/e

=kq3

kq2 +

e

kq2+kq3

=kq

Trang 21

4.2 CÂY NHỊ PHÂN

Khái niệm, đặc điểm, tính chất

Biểu diễn cây nhị phân

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

Trang 22

4.2.1 Khái niệm, đặc điểm, tính chất

Là dạng đặc biệt của cây Mỗi nút trong có tối đa 2 con, phân biệt con bên trái và con bên phải của nút

Là cây có thứ tự

Các dạng cây nhị phân đặc biệt

Cây nhị phân suy biến

Trang 23

4.2.1 Khái niệm, đặc điểm, tính chất

Các dạng cây nhị phân đặc biệt

Cây nhị phân hoàn chỉnh : Các mức đều đạt tối đa số nút trừ mức cao nhất trong cây

Trang 24

4.2.1 Khái niệm, đặc điểm, tính chất

Các dạng cây nhị phân đặc biệt

Cây nhị phân hoàn chỉnh đầy đủ : Các mức đều đạt tối

đa số nút

Trang 25

4.2.1 Khái niệm, đặc điểm, tính chất

Trong cây nhị phân

Số lượng nút tối đa ở mức i là 2 i-1

Số lượng nút tối đa ở cây nhị phân mức i 2 i – 1

Trong các cây nhị phân có cùng số nút thì cây nhị

phân suy biến có chiều cao lớn nhất, cây nhị phân

hoàn chỉnh, hoàn chỉnh đầy đủ có chiều cao nhỏ nhất

Trang 26

4.2.2 Biểu diễn cây nhị phân

Biểu diễn bằng mảng

Biểu diễn bằng con trỏ

Trang 27

4.2.2 Biểu diễn cây nhị phân

Biểu diễn bằng mảng : Dùng mảng một chiều

Trang 28

4.2.2 Biểu diễn cây nhị phân

C

D

Trang 29

4.2.2 Biểu diễn cây nhị phân

Biểu diễn bằng con trỏ

Mỗi nút trong cây là một bản ghi gồm có 3 trường

data chứa thông tin của nút

Trang 30

4.2.2 Biểu diễn cây nhị phân

Ví dụ

Nhận xét : Cây nhị phân có n nút thì có 2*n con trỏ

Trong đó n-1 con trỏ khác NULL

Trang 31

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

Định nghĩa, khai báo cấu trúc dữ liệu

Các phép toán cơ bản

Trang 32

Định nghĩa cây nhị phân tìm kiếm

Là cây nhị phân đặc biệt dùng để lưu trữ và tìm kiếm

thông tin

Khóa của nút cha không nhỏ hơn khóa của nút con bên trái và không lớn hơn khóa của nút con bên phải

Trang 33

Khai báo cấu trúc dữ liệu

struct node

{

<kiểu khóa> key ;

node *left, *right ;

Trang 34

Các phép toán cơ bản

Khởi tạo cây t rỗng : creat(t)

Kiểm tra cây t rỗng : empty(t)

Chèn khóa x vào cây t : insert(x,t)

Loại khóa x trong cây t : del(x,t)

Duyệt cây t theo 3 cách duyệt cơ bản

Trang 35

Các phép toán cơ bản

Khởi tạo cây t rỗng : creat(t)

void creat(node *&t)

{

t = NULL;

}

Trang 37

Các phép toán cơ bản

Chèn khóa x vào cây t : insert(x,t)

void insert(<kiểu khóa> x, node *&t)

Trang 38

Các phép toán cơ bản

Loại khóa x trong cây t

Nếu t->key== x

x

Trang 41

q

Trang 43

Các phép toán cơ bản

Nếu t->key!=x

if (t->key>x) del(x,t->left) ; else del(x,t->right);

!x

Trang 44

Các phép toán cơ bản

Loại khóa x trong cây t : del(x,t)

void del(<kiểu khóa> x, node *&t)

{ node *p,*q,*s;

if (t!=NULL)

{ if (t->key==x)

if (t->left==NULL) { p=t; t =t->right; delete(p);}

else if (t->right==NULL) { p=t; t =t->left; delete(p);}

else

Trang 45

Các phép toán cơ bản

else { p=t->left;

else if (t->key>x) del(x,t->left) ;

Trang 49

Các phép toán cơ bản

Nhập cây nhị phân tìm kiếm

void nhap(node * &t)

{ int n,x ; t=NULL ; cout<<“Nhap so nut : ” ; cin>>n ; for (int i=1;i<=n;i++)

{ cout<<“Nhap nut thu “<<i<<“ : “ ; cin>>x ; insert(x,t)

Trang 50

4.3 CÂY TỔNG QUÁT

Các phương pháp biểu diễn cây tổng quát

Biểu diễn cây tổng quát bằng danh sách con của nút

 Cài đặt bởi mảng

 Cài đặt bởi con trỏ

 Kết hợp mảng và con trỏ

Biểu diễn cây tổng quát bằng con trưởng và anh em liền

kề bên phải (Cây nhị phân tương đương)

 Cài đặt bởi mảng

 Cài đặt bởi con trỏ

Biểu diễn cây tổng quát theo cha của nút

 Cài đặt bởi mảng

Trang 51

BÀI TẬP ÁP DỤNG

Bài 1 - Tự cho các biểu thức số học Yêu cầu :

Dựng cây biểu thức

Viết biểu thức dưới dạng tiền tố, hậu tố

Mô tả tình trạng của ngăn xếp qua các bước định giá biểu thức dạng hậu tố, tiền tố

Trang 52

BÀI TẬP ÁP DỤNG

Bài 2 - Cho danh sách các nút trong cây

Duyệt theo inorder : BDEFCHIGA

Duyệt theo postorder : FEDIHGCBA

Dựng cây nhị phân tương ứng

Duyệt theo preorder : ACDNFOPBEMK

Duyệt theo inorder : DNCOFPAEBKM

Dựng cây nhị phân tương ứng

Trang 53

BÀI TẬP ÁP DỤNG

Bài 3 - Thực hiện các yêu cầu sau đối với cây nhị phân

tìm kiếm lưu các khóa là các số nguyên

Nhập cây nhị phân

Hiện cây theo 3 cách duyệt

Loại khóa x trong cây t

Tính tổng các nút trong cây t, tổng các nút âm chẵn,

Trang 54

BÀI TẬP ÁP DỤNG

Bài 3 - (Tiếp)

Tráo đổi các nút trong cây t

Copy cây t vào cây t1

Xóa nút lớn nhất, xóa nút nhỏ nhất trong cây t

Tìm kiếm khóa x trong cây t

Ngày đăng: 12/07/2014, 14:20

TỪ KHÓA LIÊN QUAN

w