Binaire boom naar Binary Search Tree (BST)

stemmen
1

Hoe kun je converteren Binary Tree naar Binary Search Boom met O (1) extra ruimte?

De vraag is gesteld op 17/05/2010 om 10:56
bron van user
In andere talen...                            


2 antwoorden

stemmen
6

Het omzetten van een ongeordende binaire boom in een geordende binaire zoekboom is triviaal, maar een beetje moeilijker om snel te doen.

Hier is een naïeve implementatie die uw criteria moet voldoen, zal ik niet de werkelijke stappen te nemen, alleen de algemene algoritme te beschrijven.

  1. Pak een willekeurig blad knooppunt van uw bestaande boom
  2. Ontkoppelen het blad knooppunt van uw bestaande boom
  3. Maak het knooppunt de wortel van uw nieuwe binaire zoekboom
  4. Pak een ander willekeurig blad knooppunt van uw bestaande boom
  5. Ontkoppelen dat knooppunt van uw bestaande boom
  6. Vind de juiste plek voor, en koppelen het knooppunt, in uw nieuwe binaire zoekboom
  7. Herhaal stap 4-6 totdat de oorspronkelijke boom is leeg

Je moet alleen een aantal variabelen nodig, net als de ouder van het blad knooppunt u ontkoppelen (tenzij de knooppunten ouder-banden), de wortel knooppunt van de nieuwe boom, en een paar tijdelijke variabelen, allemaal binnen uw O (1 ) ruimte criteria.

Dit zal niet tot een optimale binaire zoekboom. Daarvoor moet je ofwel sorteren knooppunten voordat u ze toevoegt, en toe te voegen in de juiste volgorde, of gebruik een balancing binaire zoekboom, zoals een rood-zwarte boom of een splayboom.

antwoordde op 17/05/2010 om 11:24
bron van user

stemmen
-1

Zet Binary Tree aan een dubbel verbonden lijst-kan inplace worden gedaan in O (n) Dan soort gebruik samenvoegen soort, nlogn terug te zetten in de lijst om een ​​boom - O (n)

Simple nlogn oplossing.

antwoordde op 18/02/2014 om 20:52
bron van user

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