boolean dfs(TreeNode root, int target) {
if (root == null)
return false;
if (root.data == target)
return true;
return dfs(root.left, target) || dfs(root.right, target);
}
在最後一行中實際執行的程序是什麼......任何人都可以請解釋一下。Java算法深度優先搜索
有趣的是,大多數人完全錯過了如果由於'||'短路而在左子樹中發現「target」,從不探索正確的子樹的事實。 – 2012-01-31 10:27:24
@UMad是真的,但它也是所需的行爲。如果你在左邊的子樹中找到'target',那麼你就不需要去探索正確的子樹。所以'''短路實際上是好的。 – 2012-01-31 10:37:42
我知道這是需要的和有意的。我在評論最常說明兩個子樹被探索的解釋,而沒有提到對右子樹的探索是有條件的。 – 2012-01-31 11:33:17