Avatar billede dsj Nybegynder
04. marts 2004 - 10:18 Der er 2 kommentarer og
2 løsninger

Balancering af binært træ

Hvordan balancerer man et binært træ? Det flyttes til et array og tilbage igen, men præcis hvordan?
Avatar billede arne_v Ekspert
04. marts 2004 - 10:34 #1
Det er mere end 15 år siden jeg sidst har kodet sådan noget (og dengang
var det i Fortran).

Hurtigt skud fra hoften:

sort array
call doit(array, 0, elements-1, empty tree)

og doit indeholder:

n = (last - first) / 2;
add array[n] til tree
if ((n-1) - first + 1) > 0 call doit(array, first, n-1, tree)
if (last - (n+1) + 1) > 0 call doit(array, n+1, last, tree)
Avatar billede soreno Praktikant
04. marts 2004 - 18:13 #2
Supplerende note:
"Sort array" vil ske automatisk hvis det er et binært søgetræ og et inorder gennemløb bruges.
Avatar billede arne_v Ekspert
06. marts 2004 - 15:52 #3
OK ?
Avatar billede dsj Nybegynder
06. marts 2004 - 22:25 #4
Tjaa, har ikke nået at prøve det af, da jeg indtil videre har løst problemet ved at udføre splay-operationer ved add/remove. Generelt bryder jeg mig heller ikke om rekursive metoder; er træet stort nok, risikerer man stack-overflows, men ok, det ser rigtig nok ud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester