převést binární strom strom binárního vyhledávání NaMístě pomocí C

hlasů
0

Bez použití jakékoli další prostor převést binární strom na binární vyhledávání tree.I přišel s následujícím algo, ale to nefunguje.

BTtoBST (uzel * kořen)

1.V kořene je NULL návrat

2.else proud = kořen

3. pokud (proudové> vlevo> proud) swapu (proudové> vlevo, proud)

4. pokud (proudové> vpravo <aktuální) swapu (proudové> vpravo, proud)

5.current = proudové> vlevo

6 přejít na 3, pokud proud! = NULL jinak přejděte na 4

7.current = proudové> doprava

Díky předem

PS: Viděl jsem tento odkaz, ale nebyl hodně pomáhat !! Převést binární strom -> BST (při zachování původního tvaru stromu)

Položena 29/03/2011 v 05:49
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Je možné zaměnit uzly včetně subtrees (nejen obsahovou node) jako v AVL stromu http://en.wikipedia.org/wiki/AVL_tree

Jen mějte vymění tak dlouho, jak BST omezení jsou porušována, restartovat hlubokou první hledání z kořene po každém swap.

Odpovězeno 29/03/2011 v 08:42
zdroj uživatelem

hlasů
0

Provést post-order (zdola nahoru) traversal stromu, přičemž uzly, které jsou na a jejich vkládání do BST.

Znamená „bez dalšího prostoru“ brání rekurzi?

Pokud tomu tak není, pak něco jako:

# 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_bstje operace filtrování; trvá existující BST a vrátí nový s daným uzlem se k ní přidá.

Přidání koncový uzel k bstje bezpečný, protože jsme ji nikdy navštívit znovu, a tak můžeme přepsat ITS lefta rightukazatele.

Odpovězeno 28/03/2012 v 18:49
zdroj uživatelem

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