Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Tìm hiểu tầm quan trọng của cấu trúc dữ liệu trong giải thuật phần 9 pdf
MIỄN PHÍ
Số trang
23
Kích thước
295.9 KB
Định dạng
PDF
Lượt xem
1936

Tìm hiểu tầm quan trọng của cấu trúc dữ liệu trong giải thuật phần 9 pdf

Nội dung xem thử

Mô tả chi tiết

Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät

Trang: 185

// Neáu DelNode laø nuùt laù

B8.1: If (DelNode->BST_Left = NULL) and (DelNode->BST_Right = NULL)

B8.1.1: BSTree = NULL

B8.1.2: Thöïc hieän B11

// Neáu DelNode coù moät caây con phaûi

B8.2: If (DelNode->BST_Left = NULL) and (DelNode->BST_Right != NULL)

B8.2.1: BSTree = BSTree->BST_Right

B8.2.2: DelNode->BST_Right = NULL

B8.2.3: Thöïc hieän B11

// Neáu DelNode coù moät caây con traùi

B8.3: If (DelNode->BST_Left != NULL) and (DelNode->BST_Right = NULL)

B8.3.1: BSTree = BSTree->BST_Left

B8.3.2: DelNode->BST_Left = NULL

B8.3.3: Thöïc hieän B11

B9: ELSE // DelNode khoâng phaûi laø nuùt goác

// Neáu DelNode laø nuùt laù

B9.1: If (DelNode->BST_Left = NULL) and (DelNode->BST_Right = NULL)

// DelNode laø caây con traùi cuûa PrDelNode

B9.1.1: if (OnTheLeft = True)

PrDelNode->BST_Left = NULL

B9.1.2: else // DelNode laø caây con phaûi cuûa PrDelNode

PrDelNode->BST_Right = NULL

B9.1.3: Thöïc hieän B11

// Neáu DelNode coù moät caây con phaûi

B9.2: If (DelNode->BST_Left = NULL) and (DelNode->BST_Right != NULL)

B9.2.1: if (OnTheLeft = True)

PrDelNode->BST_Left = DelNode->BST_Right

B9.2.2: else

PrDelNode->BST_Right = DelNode->BST_Right

B9.2.3: DelNode->BST_Right = NULL

B9.2.4: Thöïc hieän B11

// Neáu DelNode coù moät caây con traùi

B9.3: If (DelNode->BST_Left != NULL) and (DelNode->BST_Right = NULL)

B9.3.1: if (OnTheLeft = True)

PrDelNode->BST_Left = DelNode->BST_Left

B9.3.2: else

PrDelNode->BST_Right = DelNode->BST_Left

B9.3.3: DelNode->BST_Left = NULL

B9.3.4: Thöïc hieän B11

// Neáu DelNode coù hai caây con

B10: If (DelNode->BST_Left != NULL) and (DelNode->BST_Right != NULL)

// Tìm nuùt traùi nhaát trong caây con phaûi cuûa DelNode vaø nuùt cha cuûa noù

B10.1: MLNode = DelNode->BST_Right

B10.2: PrMLNode = DelNode

Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät

Trang: 186

B10.3: if (MLNode->BST_Left = NULL)

Thöïc hieän B10.7

B10.4: PrMLNode = MLNode

B10.5: MLNode = MLNode->BST_Left

B10.6: Laëp laïi B10.3

// Cheùp döõ lieäu töø MLNode veà DelNode

B10.7: DelNode->Key = MLNode->Key

// Chuyeån caây con phaûi cuûa MLNode veà caây con traùi cuûa PrMLNode

B10.8: if (PrMLNode = DelNode) // MLNode laø nuùt phaûi cuûa PrMLNode

PrMLNode->BST_Right = MLNode->BST_Right

B10.9: else // MLNode laø nuùt traùi cuûa PrMLNode

PrMLNode->BST_Left = MLNode->BST_Right

B10.10: MLNode->BST_Right = NULL

// Chuyeån vai troø cuûa MLNode cho DelNode

B10.11: DelNode = MLNode

B10.12: Thöïc hieän B11

// Huûy DelNode

B11: delete DelNode

Bkt: Keát thuùc

- Caøi ñaët thuaät toaùn:

Haøm BST_Delete_Node_SB coù prototype:

int BST_Delete_Node_SB(BST_Type &BS_Tree, T DelData);

Haøm thöïc hieän vieäc huûy nuùt coù thaønh phaàn Key laø DelData treân caây nhò phaân tìm

kieám BS_Tree baèng phöông phaùp huûy phaàn töû theá maïng laø phaàn töû traùi nhaát trong

caây con phaûi cuûa nuùt caàn huûy (neáu nuùt caàn huûy coù hai caây con). Haøm traû veà gia ù

trò 1 neáu vieäc huûy thaønh coâng (coù nuùt ñeå huûy), trong tröôøng hôïp ngöôïc laïi haøm traû

veà giaù trò 0 (khoâng toàn taïi nuùt coù Key laø DelData hoaëc caây roãng).

int BST_Delete_Node_SB(BST_Type &BS_Tree, T DelData)

{ BST_Type DelNode = BS_Tree;

BST_Type PrDelNode = NULL;

int OnTheLeft = 0;

while (DelNode != NULL)

{ if (DelNode->Key == DelData)

break;

PrDelNode = DelNode;

if (DelNode->Key > DelData)

{ DelNode = DelNode->BST_Left;

OnTheLeft = 1;

}

else // (DelNode->Key < DelData)

{ DelNode = DelNode->BST_Right;

OnTheLeft = 0;

}

}

Tải ngay đi em, còn do dự, trời tối mất!