Balansering treet

stemmer
0

Hvordan balansere dette trestruktur

                                 13
                                /  \
                               8    18
                                   /  \
                                 14    19
                                   \
                                    15
Publisert på 30/12/2009 klokken 09:17
kilden bruker
På andre språk...                            


4 svar

stemmer
1

Dine verdier er 8 13 14 15 18 19, så et balansert tre med disse verdiene kan være:

       15
    /      \
  13        19
 /  \      /
8    14  18

For å få dette treet, jeg regnet verdiene for å få den generelle form av treet (fyllagene venstre-til-høyre, ovenfra og ned) og deretter sorteres verdiene og plassert dem fra venstre til høyre i treet.

Dette har god ytelse hvis balansere et tre en gang, men bør ikke brukes til å balansere treet etter hvert sette inn / slette.

Svarte 30/12/2009 kl. 09:28
kilden bruker

stemmer
4

Du gjorde ikke spesifisert hva slags balansert treet du ønsker. For eksempel kan du bruke AVL treet

Hvis du teller node høyder da vil du få den noden 13 disbalanced med verdt -2 og 18 med en slik at du trenger å gjøre riktig rotasjon i node 18 og venstre rotasjon i node 13. Etter at noden blir balansert.

Etter riktig rotasjon:

                             13
                            /  \
                           8    14
                                  \
                                   18
                                  /  \
                                15    19

Etter venstre rotasjon:

                             14
                            /  \
                           13   18
                          /    /  \
                         8    15   19
Svarte 30/12/2009 kl. 09:34
kilden bruker

stemmer
0

Jeg er også en student og studere AVL treet, i dette spørsmålet balansen av node 13 er -2 som er brudd på avl tilstand, nå dette brudd oppstår på grunn av innsettingen av nye noden 15. nå den node som bryter med den avl tilstand kan kalle det alpha, nå må vi identifisere Ved innsetting tilfeller av innsetting er: 1) innsetting i høyre subtre av høyre barn av alfa (alpha er noden som balanse faktor bryter AVL tilstand). i dette tilfellet må vi enkelt venstre rotasjon. 2) innføring i den venstre undertreet til høyre barn av alfa. i dette tilfellet må vi gjøre dobbel rotasjon som er riktig venstre rotasjon. 3) innføring i den høyre subtre av den venstre barn av alfa. i dette tilfellet må vi gjøre dobbel rotasjon som er igjen riktig rotasjon. 4) innføring i venstre subtre av venstre barn av alfa. i dette tilfellet må vi gjøre ett riktig rotasjon å balansere treet.

nå i spørsmålet ditt dette er tilfelle 2, trenger vi å gjøre rett venstre rotasjon å balansere treet. Vi vil gjøre det riktige rotasjon mellom høyre barn av alfa og foreldre til sin venstre subtre. så etter dette må vi gjøre en venstre rotasjon mellom alfa og nye høyre barn av alfa (som var den overordnede av venstre subtre av høyre barn av alfa) etter dette venstre rotasjon vi har en tre whoes rot er 14 venstre barn av 14 er 13 venstre barn av 13 er 8. høyre barn av 14 er 18 venstre barn av 18 er 15 riktig barn av 18 er 19. jeg vet ikke hvordan å legge figer av dette treet, personen Gaim besvart dette spørsmålet også. så se figer at han postet. Jeg håper dette vil hjelpe.

Svarte 30/12/2009 kl. 12:32
kilden bruker

stemmer
0

I praksis AVL trær er balansert på innsats, sjekk om noden må balansere, og bruker halen-rekursjon å balansere alt på vei opp igjen fra innsatsen. Wikipedias AVL artikkel faktisk har noen skikkelige illustrasjoner også:

http://en.wikipedia.org/wiki/AVL_tree#Insertion

Svarte 30/12/2009 kl. 12:41
kilden bruker

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