chuong-7cay-can-bang

37 5 0
chuong-7cay-can-bang

Đ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

PowerPoint Presentation 1 3 Cây cân bằng (Balanced Tree) 3 1 Định nghĩa – Cấu trúc dữ liệu  Cây cân bằng tương đối  Là cây nhị phân thỏa mãn điều kiện là đối với mọi nút của cây thì chiều cao của câ[.]

3 Cây cân (Balanced Tree) 3.1 Định nghĩa – Cấu trúc liệu  Cây cân tương đối:  Là nhị phân thỏa mãn điều kiện nút chiều cao trái chiều cao phải nút khơng q (theo định nghĩa Adelson-Velskii Landis)  Cây cân tương đối gọi AVL (AVL Tree)  Cây cân hoàn toàn:  Là nhị phân thỏa mãn điều kiện nút số nút trái số nút phải nút không  Cây nhị phân cân hoàn toàn nhị phân cân tương đối Ví dụ: AVL Tree AVL Tree 3.1 Định nghĩa – Cấu trúc liệu (tt)  Để ghi nhận mức độ cân nút gốc con, dùng thêm thành phần Bal cấu trúc liệu nút typedef struct BALNode { T Key; int Bal; BALNode *BALLeft; BALNode *BALRight; }BALOneNode; typedef BALOneNode * BALType;  Để quản lý cân bằng, cần quản lý địa nút gốc BALType BALTree; 3.1 Định nghĩa – Cấu trúc liệu (tt)  Giá trị số cân Bal nút gốc cân tương đối hiệu số chiều cao trái chiều cao phải nút  Giá trị số cân Bal nút gốc cân hoàn toàn = hiệu số số nút trái số nút phải nút  Nếu nút nhị phân mà thỏa mãn điều kiện -1 Bal = -1)  AncRL AncRR có chiều cao h+1 (AncR->Bal = 0)  AncRL có chiều cao h+1 AncRR có chiều cao h (AncR->Bal = 1) 3.2.a Thêm nút vào cân  Nếu phát nút AncestorNode có thay đổi vượt phạm vi cho phép (bằng –2 +2) tiến hành cân lại nút AncestorNode  Việc cân lại nút AncestorNode tiến hành cụ thể theo trường hợp sau: Trường hợp 1: Nếu AncestorNode->Bal = -2:  AncRL có chiều cao h AncRR có chiều cao h+1 (AncR->Bal = -1)  AncRL AncRR có chiều cao h+1 (AncR->Bal = 0)  AncRL có chiều cao h+1 AncRR có chiều cao h (AncR->Bal = 1) 3.2.a (tt) Trường hợp 1: Nếu AncestorNode->Bal = -2: (lệch phải) Gọi: AncL = AncestorNode->BAL_Left AncR = AncestorNode->BAL_Right =>AncL có chiều cao h AncR có chiều cao h+2 (h 0) =>Có AncR có chiều cao h+1 Gọi: AncRL = AncR->BAL_Left AncRR = AncR->BAL_Right 3.2.a (tt) Trường hợp 1: Nếu AncestorNode->Bal = -2: a1) AncRL có chiều cao h AncRR có chiều cao h+1 (AncR->Bal = -1) Để cân lại AncestorNode, thực việc  quay đơn phải AncR nút lên thành nút gốc;  chuyển AncestorNode thành nút trái nút gốc AncestorNode có hai AncL AncRL (BAL_Right Rotation) Cây AncestorNode sau quay phải AncR cân 3.2.a (tt) Trường hợp 1: Nếu AncestorNode->Bal = -2: a1) AncRL có chiều cao h AncRR có chiều cao h+1 (AncR->Bal = -1) 10 3.2.a (tt)Trường hợp 2: Nếu AncestorNode->Bal = 2: b2) AncLL AncLR có chiều cao h+1 (AncL->Bal = 0) 23  Vd 2.b: 35 50 35 20 10 20 70 50 10 40 40 70 44 44 24 3.2.a (tt) Trường hợp 2: Nếu AncestorNode->Bal = 2: c2) AncLL có chiều cao h AncLR có chiều cao h+1 (AncL>Bal = -1)  Tương tự T1.3), việc cân lại AncestorNode thực thông qua phép quay kép: quay phải AncLR quay trái AncL (Double Rotation) Việc quay tiến hành: Gọi: AncLRL = AncLR->BAL_Left AncLRR = AncLR->BAL_Right => AncLRL AncLRR có chiều cao tối đa h 25

Ngày đăng: 20/04/2022, 16:44

Mục lục

  • 3. Cây cân bằng (Balanced Tree)

  • Ví dụ:

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

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

Tài liệu liên quan