1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 5 Cấu trúc dữ liệu cây

32 479 0
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

Định dạng
Số trang 32
Dung lượng 656,45 KB

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

Nội dung

Cây nhị phân tìm kiếm Cây nhị phân tìm kiếm là một cây nhị phân trong đó nút của nó được tổ chức để luôn thỏa tính chất sau đây “Giá trị của nút cha luôn lớn hơn giá trị tất cả nút con b

Trang 1

Chương 5

Cấu trúc dữ liệu cây

Trang 2

5.1 Định nghĩa

Câ là ột ấ t ú t đó b ồ á út đượ

Cây là một cấu trúc trong đó bao gồm các nút được

liên kết với nhau theo hệ thống phân cấp, trong đó nút

có cấp cao nhất được gọi là nút gốc và nút có cấp thấp

nhất được gọi là các nút lá

nhất được gọi là các nút lá

Trang 3

5.1 Định nghĩa

Trang 4

- Nút gốc (root) là nút không có nút cha.

- Nút lá (leaf – leaves) là nút không có nút con

- Cấp của 1 nút (level of a node) là các liên kết để đip ( )

Trang 5

5.2 Cây nhị phân

5 2 1 Khái niệm về cây nhị phân

ỗCây nhị phân là một cây mà mỗi nút có không quá 2 nútcon

Trang 6

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

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

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

Cây nhị phân tìm kiếm là một cây nhị phân trong đó nút

của nó được tổ chức để luôn thỏa tính chất sau đây “Giá

trị của nút cha luôn lớn hơn giá trị tất cả nút con bên trái và nhỏ hơn giá trị của tất cả nút con bên phải”.

Trang 7

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

5.2 Cây nhị phân

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

Trang 8

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

5.2 Cây nhị phân

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

Biểu diễn cây nhị phân tìm kiếm

Trang 9

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

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Khởi tạo cây

Kiểm tra cây rỗng

int isEmpty (Tree t)

{

return (t root == NULL);

return (t.root == NULL);

}

Trang 10

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

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Thêm một nút vào cây

Giả sử cần thêm 1 nút có khóa k vào cây t

- So sánh với nút gốc: nếu nhỏ hơn thì sang trái lớn hơnSo sánh với nút gốc: nếu nhỏ hơn thì sang trái, lớn hơnthì sang phải

- So sánh với nút gốc của cây con bên trái (phải) và lặplại quá trình trên cho đến khi tìm được vị trí thích hợp

lại quá trình trên cho đến khi tìm được vị trí thích hợp

Trang 11

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Thêm một nút vào cây

int Ins (pNode &r, int k)

Trang 12

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Thêm một nút vào cây

Trang 13

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Thêm một nút vào cây

Trang 14

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Trang 15

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Trang 16

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Trang 17

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Tìm khóa k có trong cây hay không

int Search(pNode r,int k)

Trang 18

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Xóa một nút X

- X là nút lá: chỉ đơn giản hủy X vì nó không móc nối

đến phần tử nào khác

Trang 19

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Trang 20

5.2 Cây nhị phân

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

Các thao tác trên cây nhị phân tìm kiếm

Xóa một nút X

- X có đủ cả 2 con: không thể hủy trực tiếp do X có đủ 2

con ⇒ hủy gián tiếp Thay vì hủy X, ta sẽ tìm một phần

tử thế mạng Y Phần tử này có tối đa một con Thông tin

Trang 22

5.2 Cây nhị phân

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

Có thể dùng 15

Trang 23

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Định nghĩa

Cây cân bằng hoàn toàn là cây nhị phân tìm kiếm mà

tại mỗi nút của nó, số nút của cây con trái chênh lệch

không quá một so với số nút của cây con phải

Cây Cân Bằng Hoàn Toàn

Cây CCBHT thì h ~ log2n

Cây nhị phân tìm kiếm cân bằng hoàn toàn

Trang 24

• Trong trường hợp xấu nhất ta chỉ phải tìm qua log n phần tử (n

• Trong trường hợp xấu nhất ta chỉ phải tìm qua log2n phần tử (n

là số nút trên cây).

• Do CCBHT là một cấu trúc kém ổn định nên trong thực tế không Do CCBHT là một cấu trúc kém ổn định nên trong thực tế không thể sử dụng Nhưng ưu điểm của nó lại rất quan trọng Vì vậy, cần đưa ra một CTDL khác có đặc tính giống CCBHT nhưng ổn định

Trang 25

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Định nghĩa: Cây nhị phân tìm kiếm cân bằng là cây mà

tại mỗi nút của nóạ độ caoộ của cây con tráiy và của cây conyphải chênh lệch không quá một

Cây AVL

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

Trang 26

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Trang 27

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Khai báo:

typedef Node *pNode;

typedef Node *pNode;

struct AVLTree

{

pNode root;

};

Trang 28

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Các trường hợp mất cân bằng:

• Trường hợp 1: g ợp cây T lệch về bên trái (có 3 khả năng) y ệ ( g)

Trang 29

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Các trường hợp mất cân bằng:

• Trường hợp 2: g ợp cây T lệch về bên phải (có 3 khả năng) y ệ p ( g)

Trang 30

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Các trường hợp mất cân bằng:

• Hướng giải quyết g g q y của 2 trường hợp là tương tự nhau nên ta g ợp g ự

chỉ giải quyết Trường hợp 1

Trang 31

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Các trường hợp mất cân bằng:

Trang 32

5.2 Cây nhị phân

5 2 3 Cây nhị phân cân bằng

Cây AVL (Adelson – Velskii – Landiis)

Các trường hợp mất cân bằng:

Ngày đăng: 02/07/2014, 21:25

TỪ KHÓA LIÊN QUAN

w