1. Trang chủ >
  2. Giáo án - Bài giảng >
  3. Cao đẳng - Đại học >

Binary Search Tree – Hủy một phần tử có khóa X

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 (2.1 MB, 123 trang )


Binary Search Tree – Hủy một phần tử có

khóa X

82







Xóa 36



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

83







Xóa nút gốc:



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

84







Xóa nút gốc:





42 là thế mạng



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

85







Kết quả xóa:



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

86







Xóa gốc 42



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

87







Xóa gốc 42





45 thế mạng



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

88







Kết quả xóa:



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

89





Các hàm dùng để hủy 1 phần tử:





Hàm delNode trả về giá trị 1, 0 khi hủy

thành công hoặc không có X trong cây:

int delNode (Tree &T, DataType X)







Hàm searchStandFor tìm phần tử thế mạng q

và gán dữ liệu của q cho nút muốn xóa p

void searchStandFor(Tree &p, Tree &q)



Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

90





Hủy một nút



int delNode(Tree &T, DataType X)

{

if (T == NULL) return 0;

if (T->data > X) return delNode(T->pLeft, X);

if (T->data < X) return delNode(T->pRight, X);

TNode* p = T;

if (T->pLeft == NULL) T = T->pRight;

else if (T->pRight == NULL) T = T->pLeft;

else // T có đủ 2 con

searchStandFor(p, T->pRight);

delete p;

}

Chương 7: Cây (Tree)



Binary Search Tree – Hủy một phần tử có

khóa X

91





Tìm phần tử thế mạng (nhỏ nhất trên cây con phải):



void searchStandFor(Tree &p, Tree &q)

{

if (q->pLeft != NULL)

searchStandFor (p, q->pLeft);

else

{

p->data = q->data;

p = q;

q = q->pRight;

}

}



Chương 7: Cây (Tree)



Binary Search Tree – Hủy toàn bộ cây

92





Việc toàn bộ cây có thể được thực hiện thông qua thao

tác duyệt cây theo thứ tự sau. Nghĩa là ta sẽ hủy cây

con trái, cây con phải rồi mới hủy nút gốc



void removeTree(Tree &T)

{

if (T)

{

removeTree(T->pLeft);

removeTree(T->pRight);

delete(T);

}

}

Chương 7: Cây (Tree)



Xem Thêm
Tải bản đầy đủ (.ppt) (123 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×