átalakítani bináris fa bináris keresés Fa helyben végzett a C

szavazat
0

Használata nélkül extra teret átalakítani bináris fa a bináris keresés tree.I jött az alábbi algo de ez nem működik.

BTtoBST (node ​​* root)

1.ha a gyökér NULL visszatérés

2.else jelenlegi = root

3.Ha (áram-> bal> áram) csere (áram-> maradt, áram)

4.Ha (áram-> jobb <áram) csere (áram-> jobb, áram)

5.current = áram-> maradt

6. megy 3, ha a jelenlegi! = NULL pedig menjen 4

7.current = áram-> jobbra

Előre is köszönöm

PS: Láttam ezt a linket, de nem volt sok segítséget !! Átalakítás bináris fa -> BST (megtartva az eredeti fa alakú)

A kérdést 29/03/2011 05:49
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

Akkor cseréld a csomópontok, beleértve részfákat (nem csak a csomópont-tartalom), mint egy AVL fa http://en.wikipedia.org/wiki/AVL_tree

Csak tartsa csere amíg BST korlátok megsértése, újraindítás mély először keres a gyökér után csere.

Válaszolt 29/03/2011 08:42
a forrás felhasználó

szavazat
0

Végezze el a post-rend (bottom-up) bejárás a fa, figyelembe véve a csomópontokat, amelyek látogatott, és ki kell venni a BST.

Nincs „anélkül, hogy extra space” zárja a rekurzió?

Ha nem, akkor valami ilyesmit:

# 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_bstegy szűrési művelet; tart egy meglévő BST és visszaad egy újat az adott csomópont hozzá.

Hozzáadása levélcsomópont a bstbiztonságos, mert akkor soha nem látogat el újra, így tudjuk törölni a leftés rightmutatók.

Válaszolt 28/03/2012 18:49
a forrás felhasználó

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