converteren Binary boom Binary Search Tree inplace met behulp van C

stemmen
0

Zonder gebruik van een extra ruimte om te zetten Binary Tree naar Binary Search tree.I kwam met het volgende algo, maar het werkt niet.

BTtoBST (knooppunt * root)

1.Als de wortel NULL return

2.else huidige = root

3.if (stroom-> links> stroom) swap (stroom-> links, stroom)

4.if (stroom-> rechts <huidig) swap (stroom-> rechts, stroom)

5.current = stroom-> left

6 naar 3 als stroom! = NULL anders heen te gaan tot en met 4

7.Current = stroom-> rechts

Bij voorbaat bedankt

PS: Ik zag deze link, maar was niet veel helpen !! Zet Binary Tree -> BST (behoud van de originele vorm van de boom)

De vraag is gesteld op 29/03/2011 om 05:49
bron van user
In andere talen...                            


2 antwoorden

stemmen
1

U kunt de knooppunten waaronder substructuren (niet alleen het knooppunt inhoud) als wisselen in een AVL Tree http://en.wikipedia.org/wiki/AVL_tree

Blijf gewoon swapping zolang BST beperkingen worden geschonden, het herstarten van diep eerst zoeken van wortel na elke swap.

antwoordde op 29/03/2011 om 08:42
bron van user

stemmen
0

Voer een post-order (bottom-up) doorlopen van de boom, het nemen van de knooppunten die worden bezocht en ze te plaatsen in een BST.

Betekent "zonder enige extra ruimte" in de weg recursie?

Zo niet, dan is er iets als:

# top level call passes null for bst
bt_to_bst (root, bst)
  # nothing to add to bst; just return it
  if null(root) -> return bst
  # if this is a leaf node, stick it into the BST
  if null(root->left) && null(root->right)
    return bst_insert(bst, root)
  # otherwise add all of left subtree into the bst and then the right tree
  bst = bt_to_bst (root->left, bst);
  return bt_to_bst (root->right, bst);

bt_to_bsteen filterbewerking; duurt een bestaande bst en retourneert een nieuwe met de bepaalde knoop toegevoegd.

Het toevoegen van een blad knooppunt naar het bstveilig is, omdat we het nooit meer zal bezoeken, dus kunnen we haar overschrijven leften rightpointers.

antwoordde op 28/03/2012 om 18:49
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more