konvertere Binary treet til binært søketre inplace med C

stemmer
0

Uten bruk av ekstra plass konvertere Binary Tre til Binary Søk tree.I kom opp med følgende algo men det fungerer ikke.

BTtoBST (node ​​* root)

1. Dersom roten er NULL retur

2.else strøm = rot

3.if (strømføren-> venstre> strøm) swap (strømføren-> venstre, strøm)

4.If (strømføren-> høyre <strøm) swap (strømføren-> høyre, strøm)

5.current = strømføren-> venstre

6 går til 3 hvis strømmen! = NULL annet gå til 4

7.current = strømføren-> høyre

Takk på forhånd

PS: Jeg så denne linken, men var ikke til mye hjelp !! Konvertere Binary Tree -> BST (opprettholde opprinnelige treet form)

Publisert på 29/03/2011 klokken 04:49
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Du kan bytte nodene inkludert trærne (ikke bare noden innhold) som i en AVL Tre http://en.wikipedia.org/wiki/AVL_tree

Bare fortsett å bytte så lenge BST begrensninger blir krenket, starte dyp første søk fra rot etter hvert bytte.

Svarte 29/03/2011 kl. 07:42
kilden bruker

stemmer
0

Utføre en post-ordre (nedenfra og opp) traversering av treet, idet nodene som er besøkt og å sette dem inn i en BST.

Betyr "uten noen ekstra plass" utelukker rekursjon?

Hvis ikke, så noe sånt som:

# 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_bster en filtreringsoperasjon; det tar en eksisterende bst og returnerer et nytt med den gitte node tilsatt.

Legge til en bladnode til bster trygt fordi vi aldri vil besøke den igjen, så vi kan overskrive sin leftog rightpekere.

Svarte 28/03/2012 kl. 17:49
kilden bruker

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