Binary treet til binært søketre (BST)

stemmer
2

Hvordan kan du konvertere Binary Tre til binært søketre med O (1) ekstra plass?

Publisert på 17/05/2010 klokken 09:56
kilden bruker
På andre språk...                            


2 svar

stemmer
7

Konvertering en uordnet binært tre inn i et ordnet binært søketre er trivielt, men litt vanskeligere å gjøre raskt.

Her er en naiv implementering som bør tilfredsstille dine kriterier, vil jeg ikke beskrive den faktiske skritt å ta, bare den generelle algoritmen.

  1. Grab en tilfeldig løvnode fra din eksisterende treet
  2. Fjerne koblingen bladnoden fra din eksisterende treet
  3. Gjør noden roten av nye binært søketre
  4. Grab en annen tilfeldig løvnode fra din eksisterende treet
  5. Oppheve denne koblingen node fra din eksisterende treet
  6. Finn riktig sted for, og koble til noden, inn i den nye binært søketre
  7. Gjenta trinn 4-6 til det opprinnelige treet er tom

Du bør kreve bare noen få variabler, som den overordnede av bladnoden du frakobling (med mindre nodene har foreldre-lenker), rotnoden av det nye treet, og et par midlertidige variabler, alt innen din O (1 ) plass kriterier.

Dette vil ikke gi en optimal binært søketre. For at du må enten sortere nodene før du legger dem, og legge dem i riktig rekkefølge, eller bruke en balanse binært søketre, som en rød-svart tre eller en spriker tre.

Svarte 17/05/2010 kl. 10:24
kilden bruker

stemmer
-1

Konvertere Binary Tre til en dobbeltlenket liste-kan gjøres inplace i O (n) Deretter sortere det ved hjelp av flettesortering, nlogn konvertere listen tilbake til et tre - O (n)

Enkelt nlogn løsning.

Svarte 18/02/2014 kl. 19:52
kilden bruker

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