1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

14 2,5K 18
Tài liệu được quét OCR, nội dung có thể không chính xác
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ây nhị phân tìm kiếm cân bằng (AVL Tree)
Tác giả Nguyen Tri Tuan
Trường học Đại học Khoa học Tự nhiên Thành phố Hồ Chí Minh
Chuyên ngành Data Structure & Algorithm
Thể loại Bài giảng
Năm xuất bản Spring 2004
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 14
Dung lượng 405,58 KB

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

Nội dung

Trang 1

Cây nhị phân tìm kiếm cân băng

(AVL Tree)

!_ Vì sao phải cân băng 2

!_ Định nghĩa

! Ví dụ

! Mô tả câu trúc dữ liệu

!_ Thao tác điều chỉnh cây

| Vi du tao cay

!_ Các đánh giá

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 77

AVL Tree

Vì sao phải cân bằng 2

!_ Cây BST có thê không cân băng

Cây bị lệch

Chi phi O(N)

Truong hop nao cay BST tré nén bị lệch 2

Can có l phương

pháp đề duy trì độ cân

bang cho cay !

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 78

39

Trang 2

AVL Tree

Vì sao phải cân bằng 2

! Cây AVL là I dạng cây BST cân băng

| Cau trtic cay AVL do 3 tac gia: Adelson,

Velskii, Landis dé xuat nam 1962

! Đây là mô hình cây cân băng động đầu tiên

duoc dé xuat

| Cay AVL khong có độ cần băng “tuyệt

đôi”, nhưng 2 cây con không bao giờ có độ

cao chênh lệch quá I

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 79

AVL Tree

Dinh nghia

|! Cay AVL la:

! Một cây nhị phân tìm kiếm

! Mỗi nút p của cây đều thỏa: độ cao của cây

con bên trai (p->pLeft) va độ cao của cay con bên phải (p->pRight) chênh lệch nhau không qua 1

Vpée Tay: abs (h p->pLeft —h p->pRight) S1

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 80

40

Trang 3

AVL Tree

Vi du

Cay AVL?

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 81

AVL Tree

Mô tả câu trúc đữ liệu

! Thêm vào mỗi nút trong cây 1 field Bai,

dién ta trạng thái của nút đó:

| Bal =-I: nut léch trái (cây con trái cao hơn

cây con phải)

| Bal = 0: nut can bang (cay con trai cao bang

cay con phai)

| Bal = +41: nut lệch phải (cây con phải cao hơn

cây con trái)

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 82

4]

Trang 4

AVL Tree

Mô tả câu trúc đữ liệu

Gy!

1 —_

„ ‘Ny 0 0 0

Hệ sô cân

các nút 0 0

trong cay

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 83

AVL Tree

Mô tả câu trúc đữ liệu

AVL_TREE

pRoot <z> Count

Data Bal

Dk pLeft Right

cây con trái ia AVLT_NODE dậy con phai

Data Bal Data Bal

pLeft pRight pLeft pRight

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 84

42

Trang 5

AVL Tree

Mô tả câu trúc đữ liệu

// Định nghĩa các cầu trúc dữ liệu

typedef struct tagAVLT_NODE {

int Data;

int Bal; — // Hệ số cân bằng (-1,0,1)

tagBT_NODE *pLeft; // con trỏ đến nút con trái

tagBT_NODE *pRight; // con tré dén nut con phai

} AVLT_NODE; // Cau tric nut cla cay AVL

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 85

AVL Tree

Mô tả câu trúc đữ liệu

// Định nghĩa các câu trúc dữ liệu (tiếp theo)

typedef struct AVL_TREE {

AVLT_NODE *pRoot; / con trỏ đến nút sốc

\; // Cau tric cay AVL

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 86

43

Trang 6

AVL Tree

Thao tác điêu chỉnh cây

| [Insert — Thém 1 phân tử vào cây]: có thể

làm cây mất cân băng

!_ Ta duyệt từ nút vừa thêm ngược về nút gốc,

| .néu tim ra 1 nút P bị mất cân bằng,

¡ thì tiến hành điều chỉnh lại cây tại nút P

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 87

AVL Tree

Thao tác điêu chỉnh cây

phân tử làm

cay mat can

bang tai nut

P

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 88

44

Trang 7

AVL Tree

Thao tác điêu chỉnh cây

| [Delete — X6a 1 phân tử]: có thể làm cây

mất cân băng

!_ Ta duyệt từ nút vừa xóa ngược về nút gốc,

| .néu tim ra 1 nút P bị mất cân bằng,

¡ thì tiến hành điều chỉnh lại cây tại nút P

| Thao tac điều chỉnh có thê làm cho những nút

phía trên nút P bị mât cần băng cân điêu chỉnh cho đên khi không còn nút nào bị mât cần băng nữa

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 89

AVL Tree

Thao tác điêu chỉnh cây

I Ví dụ: xóa

phân tử làm

cay mat can

bang tai nut

P

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 90

45

Trang 8

AVL Tree

Thao tác điêu chỉnh cây

Những trường hợp cây bị mất cân bằng và Các cách điều chỉnh cây

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 91

AVL Tree

Thao tác điêu chỉnh cây

PỊI+ PI-1

(a) (b) Hai trường hợp cây bị mât cân băng ở nhánh trái

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 92

46

Trang 9

AVL Tree

Thao tác điêu chỉnh cây

Trường hợp (a): áp dụng phép xoay đơn Trái - Phải

(LR — Single Left-Right) Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 93

AVL Tree

Thao tác điêu chỉnh cây

Vi du: thao tác xoay đơn LR

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 94

47

Trang 10

AVL Tree

Thao tác điêu chỉnh cây

A l }

a

lễ |

Truong hop (b): thu 4p dung phép xoay don LR ?

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 95

AVL Tree

Thao tác điêu chỉnh cây

Phép xoay kép Trái - Phải

(DLR — Double Left — Right)

Trường hợp (b) Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 96

48

Trang 11

AVL Tree

Thao tác điêu chỉnh cây

Trường hợp (b): áp dụng phép xoay kép Trái - Phải

(DLR) Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 97

AVL Tree

Thao tác điêu chỉnh cây

Vi du: thao tac xoay kép DLR Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 98

Trang 12

AVL Tree

Thao tác điêu chỉnh cây

P l+1

a +1

Pi

(a) (b) Hai trường hợp cây bị mât cân băng ở nhánh phải

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT DH KHTN Tp.HCM 99

AVL Tree

Thao tác điêu chỉnh cây

Phương pháp xử lý cho trường hợp mất

cân băng ở nhánh phải: tương tự như các xử lý

mất cân bằng ở nhánh trái

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 100

SO

Trang 13

AVL Tree

Vi du tao cay

| Tao cay AVL voi cdc khéa 1an luot 1a:

30, 20, 10,

(30)

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 101

AVL Tree

Vi du tao cay

[[bRL)

thém 15, 40, 25, 27, 26

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 102

51

Trang 14

AVL Tree

Vi du tao cay

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 103

thêm 5, 13, 14

AVL Tree

Cac danh gia

| D6 cao cua cay: hyyy, < 1.44log,(N+1) Cay AVL

có độ cao nhiêu hom 44% so voi dO cao cua | cay

nhị phân tôi ưu

!_ Chi phí ìm kiếm O(og;N)

| Chi phi thém phan tir O(log,N)

| Tim kiém: O(log,N)

| Diéu chinh cây: O(og›N)

!_ Chi phí xóa phần tử O(og;N)

!_ Tìm kiếm: O(og;N)

¡_ Điều chỉnh cây: O(og›N)

Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT BH KHTN Tp.HCM 104

52

Ngày đăng: 26/10/2013, 00:20

HÌNH ẢNH LIÊN QUAN

! Đây là mô hình cây cân bằng động đầu tiên - Cây nhị phân tìm kiếm cân bằng (AVL Tree)
y là mô hình cây cân bằng động đầu tiên (Trang 2)
Vì sao phải cân bằng ? - Cây nhị phân tìm kiếm cân bằng (AVL Tree)
sao phải cân bằng ? (Trang 2)

TỪ KHÓA LIÊN QUAN

w