Portál AbcLinuxu, 19. dubna 2024 11:53


Dotaz: jak najit nejhloubeji lezici uzel v libovolnem - tedy ne-binarnim stromu

2.10.2012 11:59 Karlitos
jak najit nejhloubeji lezici uzel v libovolnem - tedy ne-binarnim stromu
Přečteno: 217×
Odpovědět | Admin

Ahoj, lamu si ted hlavu s tim jak napsat metodu, ktera mi vrati nejhloubeji lezici uzel v libivolnem stromu. Lepereceno tech stromu mam vic, potrebuju kazdy projit a najit nejhloubeji lezici uzel ze vsech. uzly maji odzaky na sve rodice a seznam potomku, neobsahuji ale svou hloubku ! Takze jako navratovou hodnotu muzu mit bug int - hloubku nebo odkaz na uzel - TreeNode.

 

Napadlo me jednoduche reseni : zjistit maximalni hloubku vsech stromu a pak znova kazdy projit, a najit ten uzel ktery teto hloubce odpovida. Trosku neefektivni reseni, ale i tak mam zasek : Zjistit maximalni hloubku je trivialni, zasek sem se ale u metody ktery mi najde ten uzel, ktery ma tu maximalni hloubku.

private TreeNode findDeepestNode(TreeNode subtreeRootNode, int currentDepth){

currentDepth ++;

if (currentDepth == maxSubtreeDepth){

return subtreeRootNode;

}

else ( ??? )

}


Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 2.10.2012 12:03 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: jak najit nejhloubeji lezici uzel v libovolnem - tedy ne-binarnim stromu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Úplně stejně, jako u procházení binárního stromu. Prostě všechny stromy projdeš pomocí DFS (obyčejné procházení do hloubky), budeš si udržovat počítadlo hloubky a když narazíš na uzel ve větší hloubce, tak si ho uložíš bokem (stejně jako když hledáš maximum v seznamu).
Hello world ! Segmentation fault (core dumped)
2.10.2012 13:16 kuka
Rozbalit Rozbalit vše Re: jak najit nejhloubeji lezici uzel v libovolnem - tedy ne-binarnim stromu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud staci opravdu jen jeden uzel (tzn. pokud je jich vice ve stejne hloubce, tak nektery z nich), zcela postrada smysl prochazet stromy vicekrat. Jestli umis urcit hloubku, tak ve chvili, kdy zvysujes citac hloubky, si poznamenej uzel, ve kterem prave jsi. Nechapu proc by navratovou hodnotou byl bud int nebo TreeNode, vracej oboje.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.