2016-10-21 3 views
0

私はツリーを持っています。このツリー内のいくつかのノードには値があります。私は、値を持つノードを見つけてそれをスタックに追加したい。DFS:特定の値を持つノードをスタックに追加する(java)

private Stack<Integer> dfs(Node e, Stack stack) { 

    if(e.num != 0){ 
     stack.push(e.num); 
    } 

    for(Node child : e.children){ 
     dfs(child, stack); 
    } 

    return stack; 
} 

私の問題は、関連するe.numがスタックに追加されていないようです。代わりに、スタックは空に戻ります。

+1

私たちが見ているコードは、かなり単純です。 e.numのタイプは何ですか? (e.num!= 0)チェックが失敗する可能性があります。 – uoyilmaz

答えて

0

訪問したノードを追跡する必要があります。ツリーにバックエッジがある場合、コードは例外になります。さらに、Javaは参照渡しであるため、関数をvoidにする方が良いです。

+0

このツリーにはバックエッジがありません –

+0

Nodeクラスを追加できますか? – ugurdonmez

関連する問題