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

Cấu trúc dữ liệu di động chuong 4

43 183 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

Định dạng
Số trang 43
Dung lượng 451,73 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ÁC THAO TÁC CƠ BẢN- Duyệt cây: có 3 thứ tự duyệt dựa trên trình tự xử lý node gốc: ▪ Duyệt tiền thứ tự duyệt trước ▪ Duyệt trung thứ tự duyệt giữa ▪ Duyệt hậu thứ tự duyệt sau CÂY NHỊ

Trang 1

ĐẠI HỌC QUỐC GIA TPHCM

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

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

CHƯƠNG IV

CẤU TRÚC CÂY

Trang 2

CẤU TRÚC CÂY

Trang 3

❖ ĐỊNH NGHĨA CÂY

Cây là một tập hợp các phần tử, gọi là node, liên kết với nhau bằng các cạnh có hướng Trong đó:

- Có một node đặc biệt được gọi là gốc (root)

- Hướng của cạnh đi từ node A đến node B biểu diễn quan hệ A là cha (parent) của B hay B là con (child) của A

- Các node có cùng node cha được gọi là các node anh em (sibling)

- Ngoài node gốc, cây có thể có nhiều node con khác Mỗi node con là một cây con (subtree)

GIỚI THIỆU

Trang 4

I J K

T

Trang 5

- Node gốc: là node không có node cha

- Node lá: là node không có node con, hay có bậc

bằng 0

Ví dụ: node G, node I

- Node trung gian (node trong): là node không phải

GIỚI THIỆU

Trang 6

GIỚI THIỆU

Trang 7

❖ MỘT SỐ KHÁI NIỆM

- Chiều cao của node X (hX) là số node trên đường đi dài nhất từ X đến các node lá của nó

- Chiều cao của cây (h) là chiều cao của node gốc

- Độ sâu của một node X (dX) là độ dài đường đi từ node gốc đến X cộng thêm 1

GIỚI THIỆU

Trang 8

I J K

Trang 9

❖ BIỂU DIỄN CÂY

Dùng mảng (danh sách đặc):

- Đánh số thứ tự các node trên cây

- Nếu node thứ i là cha của node thứ j thì giá trị của phần tử thứ j trong mảng sẽ bằng i

- Nếu node thứ i là node gốc, giá trị của phần tử thứ i trong mảng sẽ bằng -1

GIỚI THIỆU

Trang 10

❖ BIỂU DIỄN CÂY

I J K

Trang 11

❖ BIỂU DIỄN CÂY

Trang 12

❖ DUYỆT CÂY THEO THỨ TỰ

Duyệt theo thứ tự trước (pre-order):

Giả sử node gốc R có n node con T1, , Tn, thực hiện:

- Xử lý node gốc R

- Duyệt theo thứ tự trước cho node T1

- Duyệt theo thứ tự trước cho node T2

- …

- Duyệt theo thứ tự trước cho node Tn

GIỚI THIỆU

Trang 13

❖ DUYỆT CÂY THEO THỨ TỰ

Duyệt theo thứ tự sau (post-order):

Giả sử node gốc R có n node con T1, , Tn, thực hiện:

- Duyệt theo thứ tự sau cho node T1

- Duyệt theo thứ tự sau cho node T2

- …

- Duyệt theo thứ tự sau cho node Tn

- Xử lý node gốc R

GIỚI THIỆU

Trang 14

❖ DUYỆT CÂY THEO THỨ TỰ

Duyệt theo thứ tự giữa (in-order):

Giả sử node gốc R có n node con T1, , Tn, thực hiện:

- Duyệt theo thứ tự giữa cho node T1

Trang 16

❖ ĐỊNH NGHĨA

Cây nhị phân đầy đủ là cây nhị phân có các node lá

có cùng mức và mỗi node trung gian có đúng 2

Trang 18

❖ TÍNH CHẤT

- Số node tại mức i không quá 2i-1

- Số node của cây T không quá 2h-1 với h là chiều

cao của cây T

- Gọi n là số node của cây T, h là chiều cao của cây T,

có h  log2(n + 1)

CÂY NHỊ PHÂN

Trang 23

struct Node {

char key;

Node *pLeft, *pRight;

};

typedef Node *TREE;

void CreateTree(TREE &root) {

root = NULL;

}

CÂY NHỊ PHÂN

Trang 25

if ( a && b && c && d && e && f) {

a->pLeft = b; a->pRight = c; c->pLeft = d;

c->pRight = e; e->pLeft = f; root = a;

}

return root;

CÂY NHỊ PHÂN

Trang 26

❖ CÁC THAO TÁC CƠ BẢN

- Duyệt cây: có 3 thứ tự duyệt dựa trên trình tự xử lý node gốc:

▪ Duyệt tiền thứ tự (duyệt trước)

▪ Duyệt trung thứ tự (duyệt giữa)

▪ Duyệt hậu thứ tự (duyệt sau)

CÂY NHỊ PHÂN

Trang 27

❖ CÁC THAO TÁC CƠ BẢN

▪ Duyệt tiền thứ tự (duyệt trước - Pre-order):

nguyên tắc là xử lý nút gốc, sau đó duyệt cây con bên trái rồi duyệt cây con bên phải

Trang 28

❖ CÁC THAO TÁC CƠ BẢN

▪ Duyệt tiền thứ tự (duyệt trước - Pre-order):

void NLR(TREE root) {

Trang 30

❖ CÁC THAO TÁC CƠ BẢN

▪ Duyệt trung thứ tự (duyệt giữa - In-order):

void LNR(TREE root) {

Trang 31

❖ CÁC THAO TÁC CƠ BẢN

▪ Duyệt hậu thứ tự (duyệt sau - Post-order):

nguyên tắc là duyệt cây con bên trái, sau đó

duyệt cây con bên phải rồi xử lý nút gốc

Trang 32

❖ CÁC THAO TÁC CƠ BẢN

▪ Duyệt hậu thứ tự (duyệt sau - Post-order):

void LRN(TREE root) {

Trang 34

❖ CÁC THAO TÁC CƠ BẢN

▪ Tạo cây từ kết quả duyệt tiền thứ tự và trung thứ tự:

Nguyên tắc:

- Node đầu tiên X trong dãy tiền thứ tự là node gốc

- Node X sẽ nằm trong dãy trung thứ tự, chia dãy này thành 2 dãy bên trái và bên phải Dãy bên trái sẽ là cây con trái của X, dãy bên phải là cây con phải của X

- Thực hiện tương tự cho dãy bên trái trước rồi đến dãy bên phải

CÂY NHỊ PHÂN

Trang 36

NLR: B C D E F

LNR: B

NLR: C D E F LNR: D C F E

NLR: D E F LNR: D

NLR: E F LNR: F E

Trang 37

❖ CÁC THAO TÁC CƠ BẢN

▪ Tạo cây từ kết quả duyệt tiền thứ tự và trung thứ tự:

Giả sử kết quả duyệt là các số nguyên

- pre là kết quả duyệt tiền thứ tự

- in là kết quả duyệt trung thứ tự

- m, n là chỉ số đầu và cuối dãy tiền thứ tự cần xét

- k, l là chỉ số đầu và cuối dãy trung thứ tự cần xét

CÂY NHỊ PHÂN

Trang 38

TREE CreateTree(int *pre, int *in, int m, int n, int k, int l) {

if (in[i] == pre[m]) break;

root->pLeft = CreateTree(pre, in, m+1, n, k, i - 1);

root->pRight = CreateTree(pre, in, m+i-k+1, n, i+1,l); } return root;

}

CÂY NHỊ PHÂN

Trang 39

❖ CÁC THAO TÁC CƠ BẢN

▪ Tạo cây từ kết quả duyệt hậu thứ tự và trung thứ tự:

Nguyên tắc:

- Node cuối cùng X trong dãy hậu thứ tự là node gốc

- Node X sẽ nằm trong dãy trung thứ tự, chia dãy này thành 2 dãy bên trái và bên phải Dãy bên trái sẽ là cây con trái của X, dãy bên phải là cây con phải của X

- Thực hiện tương tự cho dãy bên phải trước rồi đến

CÂY NHỊ PHÂN

Trang 42

❖ CÁC THAO TÁC CƠ BẢN

▪ Tạo cây từ kết quả duyệt tiền thứ tự và trung thứ tự:

Giả sử kết quả duyệt là các số nguyên

- post là kết quả duyệt hậu thứ tự

- in là kết quả duyệt trung thứ tự

- m, n là chỉ số đầu và cuối dãy hậu thứ tự cần xét

- k, l là chỉ số đầu và cuối dãy trung thứ tự cần xét

CÂY NHỊ PHÂN

Trang 43

TREE CreateTree(int *post, int *in, int m, int n, int k, int l) { int i;

Ngày đăng: 08/09/2017, 15:38

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN