Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako to urobiť postorder Traversal v binárny strom v jazyku Java

Hoci Java neposkytuje binárny strom triedu vo východiskových knižníc , základné binárny strom trieda je natoľko jednoduchý , že majú byť predložené. " Priechod " z dátovej štruktúry , je algoritmus , ktorý navštívi každý uzol raz . To je často implementovaný ako akési iterátor ( podobne ako zoznam iterátor ) alebo metódu , ktorá bude volať metódy spätného volania pre každý uzol . V Jave , urobiť " postorder " priechod , ktorý zavíta na koreňový uzol naposledy , nie sú potrebné žiadne spätné volanie alebo iterátory . Funkcie priechod bude jednoducho vytlačiť každý uzol je navštívi na konzole . Pokyny dovolená 1

Napíšte si základné binárny vyhľadávací strom triedu . Existujú iba dve metódy , ktoré treba podporovať v tejto fáze : základný konštruktor , ktorý inicializuje hodnotu uzla , a metóda Insert . Metóda insert bude prechádzať strom a vytvoriť nový uzol na správnom mieste . " " Public class BinaryTree { BinaryTree vľavo , vpravo BinaryTree , int hodnota ; verejné BinaryTree ( int v ) { value = v ; } //Vložte hodnotu do stromu public void vložkou ( int v ) { if ( v prípade , ( vľavo = = null ) vľavo = new BinaryTree ( v ) , inak left.insert ( v ) ; } else if ( v > hodnota ) { if ( vpravo == null ) vpravo = new BinaryTree ( v ) , inak right.insert ( v ) ; .. } } " "
2

Vytvoriť inštanciu binárneho stromu , ktorý bude koreňový uzol Každý uzol , aj koreňový uzol , musí mať hodnotu

3

Vyberte hodnotu pre koreňový uzol , ktorý je niekde uprostred objektov budete skladovanie . Napríklad, ak ste ukladanie rovnomerné rozloženie čísel od 1 do 100 , 50 je dobrá voľba pre .. koreňový uzol Binárne stromy by mali byť vyvážené ako je to možné , pretože nevyvážené stromy rastú veľmi vysoký a nie sú príliš účinné " " BinaryTree b = new BinaryTree ( 50 ) , " "
4

Insert niektoré uzly do stromu . Vzhľadom k tomu , že tento strom nie je automatické vyvažovanie , udržať rovnováhu , by mali byť vložené uzly v určitom poradí . poradie , v tomto príklade kódu je riešená tak , aby v čo najkratšom a najúčinnejší stromu je to možné . " " b vložka ( 20 ) , b.insert ( 40 ) , b.insert ( 10 ) , b.insert ( 5 ) , b.insert ( 45 ) , b.insert ( 70 ) , b.insert ( 60 ) ; b.insert ( 80 ) ; b.insert ( 55 ) ; b.insert ( 85 ) , " "
5

Najeďte strom , posuvné ľavej strom ako prvý , po pravej stromu , a nakoniec koreňový uzol . Ak sa používa rekurzia urobiť postorder priechod , metóda je len tri riadky dlho . V tomto prípade , bude zásobník rásť iba do výšky stromu . Vzhľadom k tomu , že strom je vyvážený a malá , nebude pretečeniu rekurzia stack .
6

Pridať novú metódu triedy BinaryTree názvom postorder . Tu, len vytlačí hodnotu každého uzla je navštívi . " " public void postorder ( ) { if ( levý! = null ) left.postorder ( ) ; if ( vpravo = null ) right.postorder ( ) ; ! System.out.println ( value ) ; } " "
7

Vytlačiť uzly v postorder volaním . b.postorder metóda po svojich vložiek " " b.postorder ( ) ; "

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené