logo

Binært søgetræ vs AVL-træ

Før vi kender til forskellene mellem det binære søgetræ og AVL-træet, bør vi kende til det binære søgetræ og AVL-træet separat.

Hvad er et binært søgetræ?

Det binært søgetræ er en træ binært træ. Som vi ved, kan dette træ have 'n' antal børn, hvorimod; det binære træ kan indeholde de yderste to børn. Så begrænsningen af ​​et binært træ er også efterfulgt af det binære søgetræ. Hver node i et binært søgetræ skal have de yderste to børn; med andre ord kan vi sige, at det binære søgetræ er en variant af det binære træ.

Det binære søgetræ følger også egenskaberne for den binære søgning. I binær søgning skal alle elementer i et array være i sorteret rækkefølge. Vi beregner det midterste element i den binære søgning, hvor den venstre del af det midterste element indeholder værdien mindre end den midterste værdi, og den højre del af det midterste element indeholder værdierne større end den midterste værdi.

I binært søgetræ bliver det midterste element til rodknudepunktet, den højre del bliver det højre undertræ, og den venstre del bliver det venstre undertræ. Derfor kan vi sige, at det binære søgetræ er en kombination af en binært træ og binær søgning .

Bemærk: Binært søgetræ kan defineres som det binære træ, hvor alle elementerne i det venstre undertræ er mindre end rodnoden, og alle elementerne i det højre undertræ er større end rodknuden.

Tidskompleksitet i binært søgetræ

Hvis det binære søgetræ næsten er et balanceret træ, vil alle operationer have en tidskompleksitet på O(logn) fordi søgningen er opdelt enten til venstre eller højre undertræ.

hvordan man åbner en fil med java

Hvis det binære søgetræ er enten venstre eller højre skævt, så vil alle operationer have den tidskompleksitet som På) fordi vi skal krydse indtil de n elementer.

Hvad er AVL-træet?

An AVL træ er et selvbalancerende binært søgetræ, hvor forskellen mellem højden af ​​venstre og højre undertræ ikke kan være mere end én. Denne forskel er kendt som en balancefaktor. I AVL-træet kan værdierne af balancefaktor være enten -1, 0 eller 1.

Hvordan sker selvbalanceringen af ​​det binære søgetræ?

Som vi ved, er AVL-træet et selvbalancerende binært søgetræ. Hvis det binære søgetræ ikke er afbalanceret, kan det være selvbalanceret med nogle omarrangeringer. Disse omarrangeringer kan udføres ved hjælp af nogle rotationer.

Lad os forstå selvbalancering gennem et eksempel.

forårsstøvle annotationer

Antag, at vi vil indsætte 10, 20, 30 i et AVL-træ.

Følgende er måderne at indsætte 10, 20, 30 i et AVL-træ:

    Hvis rækkefølgen af ​​indsættelse er 30, 20, 10.

Trin 1: Først opretter vi et binært søgetræ, som vist nedenfor:

Binært søgetræ vs AVL-træ

Trin 2: I ovenstående figur kan vi observere, at træet er ubalanceret, fordi balancefaktoren for node 30 er 2. For at gøre det til et AVL-træ skal vi udføre nogle rotationer. Hvis vi udfører den rigtige rotation på node 20, vil node 30 bevæge sig nedad, mens node 20 vil bevæge sig opad, som vist nedenfor:

Binært søgetræ vs AVL-træ

Som vi kan observere, følger det endelige træ egenskaben for det binære søgetræ og et balanceret træ; derfor er det et AVL-træ.

I sagen var træet venstre ubalanceret træ, så vi udfører den rigtige rotation på noden.

    Hvis rækkefølgen af ​​indsættelse er 10, 20, 30.

Trin 1: Først opretter vi et binært søgetræ som vist nedenfor:

Binært søgetræ vs AVL-træ

Trin 2: I ovenstående figur kan vi observere, at træet er ubalanceret, fordi balancefaktoren for node 10 er -2. For at gøre det til et AVL-træ skal vi udføre nogle rotationer. Det er et højre ubalanceret træ, så vi vil udføre venstrerotation. Hvis vi udfører venstrerotation på node 20, så vil node 20 bevæge sig opad, og node 10 vil bevæge sig nedad, som vist nedenfor:

Binært søgetræ vs AVL-træ

Som vi kan observere, følger det endelige træ ejendommens ejendom Binært søgetræ og en balanceret træ ; derfor er det et AVL-træ.

    Hvis rækkefølgen af ​​indsættelse er 30, 10, 20

Trin 1: Først opretter vi det binære søgetræ som vist nedenfor:

Binært søgetræ vs AVL-træ

Trin 2: I ovenstående figur kan vi observere, at træet er ubalanceret, fordi balancefaktoren for rodknuden er 2. For at gøre det til et AVL-træ skal vi udføre nogle rotationer. Ovenstående scenarie er venstre-højre ubalanceret, da en node er til venstre for sin overordnede node, og en anden er til højre for sin overordnede node. Først vil vi udføre den venstre rotation, og rotationen sker mellem noderne 10 og 20. Efter venstre rotation vil 20 bevæge sig opad, og 10 vil bevæge sig nedad som vist nedenfor:

Binært søgetræ vs AVL-træ

Alligevel er træet ubalanceret, så vi udfører den rigtige rotation på træet. Når den rigtige rotation er udført på træet, vil træet gerne, som vist nedenfor:

Binært søgetræ vs AVL-træ

Som vi kan observere i ovenstående træ, følger træet egenskaben for det binære søgetræ og et balanceret træ; derfor er det et AVL-træ.

    Hvis rækkefølgen af ​​indsættelsen er 10, 30, 20

Trin 1: Først opretter vi det binære søgetræ, som vist nedenfor:

Binært søgetræ vs AVL-træ

Trin 2: I ovenstående figur kan vi observere, at træet er ubalanceret, fordi balancefaktoren for rodknuden er 2. For at gøre det til et AVL-træ skal vi udføre nogle rotationer. Ovenstående scenarie er højre-venstre ubalanceret, da en node er til højre for sin overordnede node, og en anden node er til venstre for sin overordnede node. Først vil vi udføre den rigtige rotation, der sker mellem noderne 30 og 20. Efter højre rotation vil 20 bevæge sig opad, og 30 vil bevæge sig nedad som vist nedenfor:

10 ml er hvor meget
Binært søgetræ vs AVL-træ

Alligevel er ovenstående træ ubalanceret, så vi skal udføre venstrerotation på noden. Når den venstre rotation er udført, vil knudepunktet 20 bevæge sig opad, og knudepunktet 10 vil bevæge sig nedad som vist nedenfor:

Binært søgetræ vs AVL-træ

Som vi kan observere i ovenstående træ, følger træet egenskaben for det binære søgetræ og et balanceret træ; derfor er det et AVL-træ.

Forskelle mellem binært søgetræ og AVL-træ

Binært søgetræ vs AVL-træ
Binært søgetræ AVL træ
Hvert binært søgetræ er et binært træ, fordi begge træer indeholder de yderste to børn. Hvert AVL-træ er også et binært træ, fordi AVL-træet også har de yderste to børn.
I BST findes der ingen term, såsom balancefaktor. I AVL-træet indeholder hver node en balancefaktor, og værdien af ​​balancefaktoren skal være enten -1, 0 eller 1.
Ethvert binært søgetræ er ikke et AVL-træ, fordi BST kan være enten et balanceret eller et ubalanceret træ. Hvert AVL-træ er et binært søgetræ, fordi AVL-træet følger egenskaben for BST.
Hver knude i det binære søgetræ består af tre felter, dvs. venstre undertræ, knudeværdi og det højre undertræ. Hver knude i AVL-træet består af fire felter, dvs. venstre undertræ, knudeværdi, højre undertræ og balancefaktoren.
I tilfælde af binært søgetræ, hvis vi ønsker at indsætte en hvilken som helst node i træet, sammenligner vi nodeværdien med rodværdien; hvis værdien af ​​node er større end rod node værdi, så indsættes noden til højre undertræ ellers indsættes noden i venstre undertræ. Når først knudepunktet er indsat, er der ikke behov for at kontrollere højdebalancefaktoren, for at indsættelsen skal fuldføres. I tilfælde af AVL-træ finder vi først det passende sted at indsætte noden. Når noden er indsat, vil vi beregne balancefaktoren for hver node. Hvis balancefaktoren for hver knude er opfyldt, er indsættelsen fuldført. Hvis balancefaktoren er større end 1, så skal vi udføre nogle rotationer for at balancere træet.
I binært søgetræ er træets højde eller dybde O(n), hvor n er antallet af noder i det binære søgetræ. I AVL-træet er træets højde eller dybde O(logn).
Det er nemt at implementere, da vi skal følge egenskaberne for binær søgning for at indsætte noden. Det er komplekst at implementere, fordi vi i AVL-træet først skal konstruere AVL-træet, og derefter skal vi kontrollere højdebalancen. Hvis højden er ubalance, skal vi udføre nogle rotationer for at balancere træet.
BST er ikke et balanceret træ, fordi det ikke følger konceptet om balancefaktoren. AVL-træ er et højdebalanceret træ, fordi det følger konceptet med balancefaktoren.
Søgning er ineffektiv i BST, når der er et stort antal noder tilgængelige i træet, fordi højden ikke er afbalanceret. Søgning er effektiv i AVL-træet, selv når der er et stort antal noder i træet, fordi højden er afbalanceret.