converti arbore binar la INPLACE binar de căutare Arbore folosind C

voturi
0

Fără a utiliza orice spațiu suplimentar converti binar arbore binar de căutare tree.I a venit cu următoarea algo dar aceasta nu funcționează.

BTtoBST (nod * root)

1.Dacă rădăcina este întoarcerea NULL

curent 2.else = root

3.If (a curentului> din stânga> curent) swap (a curentului> stânga, curent)

4.Daca (a curentului> dreapta <curent) de swap (a curentului> dreapta, curent)

5.current = a curentului> din stânga

6 mergeți la 3 dacă curent! = NULL altceva merge la 4

7.current = a curentului> dreapta

Mulțumesc anticipat

PS: Am văzut această legătură , dar nu a fost de mare ajutor !! Conversia binar copac -> BST (menținând forma copac originală)

Întrebat 29/03/2011 la 05:49
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
1

Puteți schimba nodurile , inclusiv subarbori (nu numai conținutul de nod) , cum ar fi într - un arbore AVL http://en.wikipedia.org/wiki/AVL_tree

Doar ține schimbarea atâta timp cât constrângerile BST sunt încălcate, repornind prima căutare profundă de la rădăcină, după fiecare schimb.

Publicat 29/03/2011 la 08:42
sursa de către utilizator

voturi
0

Efectuați un post-comandă (de jos în sus) traversarea arborelui, luând nodurile care sunt vizitate și introducerea acestora într-un BST.

Are „fără nici un spațiu suplimentar“ împiedică recursivitate?

Dacă nu, atunci ceva de genul:

# 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_bsteste o operație de filtrare; este nevoie de o BST existentă și returnează un nou una cu nodul adăugat la dat.

Adăugarea unui nod frunză la The bsteste în siguranță , deoarece nu le vom vizita din nou, astfel incat sa putem sa suprascrie leftși rightindicii.

Publicat 28/03/2012 la 18:49
sursa de către utilizator

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