Tải bản đầy đủ (.pdf) (10 trang)

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - HCMUS 2011

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.23 MB, 10 trang )

Giảng viên:

Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến

2

Khái niệm
Phép duyệt cây và Biểu diễn cây
Cây nhị phân và Cây nhị phân tìm kiếm
Cây AVL
Cây AA

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 1

3

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

4

 Tree
 Search tree
 Binary search tree
 Balanced tree
 AVL tree
 AA tree
 Red-Black tree
…


Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 2

5

a

b c

d e f g h

i j k l m n

o p q

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

6

Sơ đồ tổ chức Cây thư mục

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 3

7

Cây (cây có gốc) được xác định đệ quy như
sau:

1. Tập hợp gồm 1 đỉnh là một cây. Cây này có gốc là

đỉnh duy nhất của nó.
2. Gọi T1, T2, … Tk (k ≥ 1) là các cây khơng cắt nhau có

gốc tương ứng r1, r2, … rk.
Giả sử r là một đỉnh mới khơng thuộc các cây Ti. Khi đó,

tập hợp T gồm đỉnh r và các cây Ti tạo thành một cây
mới với gốc r. Các cây T1, T2, … Tk được gọi là cây
con của gốc r.

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

8

Nút gốc

r1 r2 rk

T1 T2 Tk

Cây con

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 4

9


 node: đỉnh
 root: gốc cây
 leaf: lá
 inner node/internal node: đỉnh trong
 parent: đỉnh cha
 child: đỉnh con
 path: đường đi

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

10

Nút gốc

r1 r2 rk
T1
Cây con k1 k2

T2 Tk

k3 k4 k5

Nút lá
Cấu trúc dữ liệu và giải thuật - HCMUS 2011 Đường đi k6

©FIT-HCMUS 5

11

 degree/order: bậc

 Bậc của node: Số con của node
 Bậc của cây: bậc lớn nhất trong số các con

 depth/level: độ sâu/mức
 Mức (độ sâu)của node: Chiều dài của đường đi từ node
gốc đến node đó cộng thêm 1.

 height: chiều cao
 Chiều cao cây:

 Cây rỗng: 0
 Cây khác rỗng: Mức lớn nhất giữa các node của cây

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

12 Nút gốc
Độ cao = 4
Bậc = k

Bậc = 2

r1 r2 rk
T1
Cây con k1 k2

T2 Tk

k3 k4 k5

Nút lá

Cấu trúc dữ liệu và giải thuật - HCMUS 2011 Đường đi k6

©FIT-HCMUS 6

13

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

14

 Đảm bảo đến mỗi node trên cây chính xác một lần
một cách có hệ thống.

 Nhiều thao tác xử lý trên cây cần phải sử dụng đến
phép duyệt cây.

 Các phép cơ bản:
 Duyệt trước (Pre-order)

 Duyệt giữa (In-order)

 Duyệt sau (Post-order)

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 7

15
Parent(a)?


Tìm cha một đỉnh. Parent(b) = a Eldest-
Child(c) = g
• Parent(x)
b c
Tìm đỉnh con trái nhất.
d e f g h
• EldestChild(x)
NextSibling(g) = h
Tìm đỉnh kề phải.
i
• NextSibling(x)

Cấu trúc dữ liệu và giải thuật - HCMUS 2011 NextSibling(h)?

16 Duyệt theo chiều sâu

Duyệt trước b c

• abdeijcfgkh d e f g h

Duyệt giữa i j k

• dbiejafckgh

Duyệt sau

• dijebfkghca

Cấu trúc dữ liệu và giải thuật - HCMUS 2011


©FIT-HCMUS 8

17

Pre-order Post-order

void Preorder(NODE A) void Postorder(NODE A)

{ {
NODE B; NODE B;

Visit(A);

B = EldestChild(A); B = EldestChild(A);

while (B != ) { while (B != ) {
Preorder(B); Postorder(B);
B = NextSibling(B); B = NextSibling(B);

} }
Visit(A);

} }

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

18

In-Order


void Inorder(NODE A)
{
NODE B;
} B = EldestChild(A);
if (B != ) {

Inorder(B);
B = NextSibling(B);
}
Visit(A);
while (B != ) {
Inorder(B);
B = NextSibling(B);
}

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 9

19

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

20

info child id next

1a 2 3

2b 4 5


3c 6 7 8

4d

5e 9 10

6f b c

7g 11

8h d e f g h
9i

10 j

11 k i j k

Cấu trúc dữ liệu và giải thuật - HCMUS 2011

©FIT-HCMUS 10


×