Binäre Baum binären Suchbaum inplace konvertieren C unter Verwendung

stimmen
0

Ohne Verwendung eines zusätzlichen Platz Binary Tree zu Binary Search tree.I konvertieren kam mit der folgenden algo, aber es funktioniert nicht.

BTtoBST (node ​​* root)

1. Wenn die Wurzel ist return NULL

2.else Strom = root

3.if (strom-> links> Strom) swap (strom-> links, Strom)

4.if (strom-> rechts <current) swap (strom-> rechts, Strom)

5.current = strom-> links

6 geht auf 3, wenn Strom! = NULL sonst geht bis 4

7.Current = strom-> Recht

Danke im Voraus

PS: habe ich diesen Link aber war nicht viel helfen !! Konvertieren Binary Tree -> BST (Aufrechterhaltung ursprüngliche Baumform)

Veröffentlicht am 29/03/2011 um 05:49
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Sie können die Knoten einschließlich Teilbäume (nicht nur der Knoteninhalt) wie in einem AVL - Baum tauschen http://en.wikipedia.org/wiki/AVL_tree

Halten Sie einfach solange BST Bedingungen verletzt Swapping werden, nach jeder Swap von der Wurzel tief Suche neu zu starten.

Beantwortet am 29/03/2011 um 08:42
quelle vom benutzer

stimmen
0

Führen Sie eine Post-Order (bottom up) Traversal des Baumes, wobei die Knoten, die besucht werden und sie in ein BST eingesetzt wird.

Ist „ohne zusätzlichen Raum“ ausschließen Rekursion?

Wenn nicht, dann so etwas wie:

# 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_bstOperation ist eine Filterung; es nimmt einen vorhandenen bst und gibt einen neuen mit dem gegebenen Knoten zu ihm hinzugefügt.

Hinzufügen eines Blattknotens zu der bstist sicher , weil wir es nie wieder besuchen, so können wir seine überschreiben leftund rightZeiger.

Beantwortet am 28/03/2012 um 18:49
quelle vom benutzer

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