Jeg har fått to binære søketrær. For eksempel, A og B. Deretter ble jeg bedt om å slette treet B fra treet A.
Ved sletting, mener jeg slette alle nodene som finnes i B fra A. Merk: B er ikke nødvendigvis et subtre av A.
f.eks:
A:
50 / \ 10 75 / / \ 1 60 90
B:
10 / \ 1 75
Resulterer treet skal være:
50 \ 60 \ 90
To tilnærminger kom til mitt sinn:
A1:
node * deleteTree (node * A, node * B);
Ta roten av treet B. Slett node fra treet A (ved normal BST sletting metode). Neste dele problem i to deler - for den venstre undertreet til B og den høyre subtre av B. For hver av undertreet, recurse. For venstre treet, bør noden som okkuperte noden som ble slettet tjene som roten til treet A. For den rette treet, den inorder følgeren slettet noden skal serveren som root for treet A.
A2: Den andre tilnærmingen er litt merkelig. Jeg finner inorder og forhåndsbestilling traversering av treet A. Finn og slette alle nodene i treet B ved hjelp av binære søk sammen med rekursjon (vi ikke endre forhåndsbestilling). Endelig recostruct vår bst fra inorder (gjenværende) og forhåndsbestilling (uendret).
Prob A: Finn en effektiv måte for BST.
Prob B: Finn en effektiv måte for noe Binary treet (ikke bare BST).













