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