2016-10-18 10 views
1

JavaScriptでDFSを作成していますが、アルゴリズムはノードを検出しますが、returnステートメントは現在の再帰呼び出しを終了し、ツリーを検索し続けます。DFSアルゴリズムは再帰呼び出しを継続し、返さない

dfs(node, target = 0) { 
    if (node) { 
     if (node.data === target) { 
     return node; 
     } 
     console.log(node.data); 
     this.dfs(node.left, target); 
     this.dfs(node.right, target); 
    } 
    } 
+0

正しい。今何が問題なのですか?それを試して解決するために何をしましたか? –

答えて

1

再帰呼び出しの結果を返す必要があります(反復呼び出しのように聞こえる)。この場合、結果はノードまたはundefinedであると仮定します。最初にノード自体を試し、次に左の部分と最後に正しい部分を試します。

dfs(node, target = 0) { 
    if (node) { 
     if (node.data === target) { 
      return node; 
     } 
     console.log(node.data); 
     return this.dfs(node.left, target) || this.dfs(node.right, target); 
    } 
} 
関連する問題