0
私は木構造(正確には家系図)でリンクされたarraylistを持っています。各ノードは、世代フィールドを含むオブジェクトです。木の中で最も高い世代の葉を探したいと思います。私はこれを試してみました:n -aryツリー内で最高値を見つける
private int findHighestLeafGeneration(FamilyMember node, int gen){
if(node.getChildren().isEmpty()){
return gen;
}
for(int i = 0; i < node.getChildren().size(); i++){
gen = findHighestLeafGeneration(node.getChild(i), node.getChild(i).getGeneration());
}
return gen;
}
私はこのようなメソッドを呼び出す:これが行うことになっている何
findHighestLeafGeneration(node, node.getGeneration());
が家族のツリー(ノード)のメンバーを取り、そのためのすべての子孫を印刷していますメンバー。私のPrintDescendantsメソッドでは、印刷する世代数が必要です。
しかし、上記は少しバギーです。リーフ生成を取得し、リーフ生成を親ノード生成で上書きします。すべての手掛かりはなぜですか?
wow!すばらしいです!それは完璧に動作します! – user559142
あなたがそれを気に入ってよかった!あなたが "最高"と言うが、>または<演算子を使用するコードのどこにもないときは、警告サインです。代わりにあなたが "最低"と答えた場合 - あなたのコードはどのように変わるでしょうか? –
変数名をlowestChildに変更し、>を<に変換すると思います。 – user559142