Ik heb gekregen twee binary search bomen. Bijvoorbeeld, A en B. Vervolgens werd ik gevraagd om de boom B te verwijderen uit de boom A.
Door deletie, bedoel ik verwijder alle knooppunten aanwezig in B van A. Opmerking: B is niet per se een substructuur van A.
bijvoorbeeld:
A:
50 / \ 10 75 / / \ 1 60 90
B:
10 / \ 1 75
Resulterend boom zou moeten zijn:
50 \ 60 \ 90
Twee benaderingen kwam naar mijn mening:
A1:
knooppunt * deleteBoom (knooppunt * A, knooppunt * B);
Neem de wortel van de boom B. Verwijder dit knooppunt uit A (bij normale BSt verwijderingsmethode). Naast verdelen het probleem in twee delen - voor het linker deelboom van B en de rechter deelboom van B. Voor elke deelboom, recurse. Voor de linker deelboom, dient de knooppunt dat het knooppunt dat bezet werd verwijderd dienen als uitgangspunt voor boom A. de rechter deelboom, inorder de opvolger van de verwijderde server knooppunt dient als uitgangspunt voor tree A.
A2: De andere aanpak is een beetje raar. Ik vind de inorder en preorder traversal van de boom A. Zoek en alle knopen in de boom B verwijderen met behulp van binaire zoeken samen met recursie (we niet de preorder te wijzigen). Tenslotte recostruct onze bst van de inorder (resterende) en de preorder (ongewijzigd).
Prob A: Vind een efficiënte manier voor BST.
Prob B: Vind een efficiënte manier voor een binaire boom (niet alleen BST).













