尝试从二叉树中的根计算叶子的路径总和。似乎没有工作,doesIt的值变为true,但由于它是递归,因此当堆栈弹出时它会切换回false。不知道如何解决它。 如何更改我的代码,以便一旦doesIt的值更改为true,它就会一直向上传播?
考虑树:[5,4,8,11,null,null,null,7,2] InOrder
所以5有2个孩子4和8,4个有1个孩子11,8个没有孩子
hasPathSum(根,22)
public boolean hasPathSum(TreeNode root, int sum) {
boolean doesIt = false;
if (root != null)
{
doesIt = pathSum(root, sum, 0, doesIt);
}
return doesIt;
}
private static boolean pathSum(TreeNode root, int sum, int sumSoFar, boolean doesIt)
{
if (root.left == null && root.right == null)
{
if (sumSoFar+root.val == sum)
{
doesIt = true;
return doesIt;
}
return doesIt;
}
if (root.left != null)
{
pathSum(root.left, sum, sumSoFar+root.val,doesIt);
}
if (root.right != null)
{
pathSum(root.right, sum, sumSoFar+root.val,doesIt);
}
return doesIt;
}
答案 0 :(得分:0)
你只是通过调用方法给孩子们抛出的值。我稍微改写了你的代码:
null
这是基本的递归:对于sum
节点,定义的答案是假的,叶是另一个极端情况,一般情况试图在两个分支之一中取得成功。
P.S。从问题和方法签名中不是很清楚你想要实现什么,但我想你检查是否存在从根到任何叶子的路径,其中给定的iframe#instagram-embed-0 {
float:right;
position: relative;
right: 100px;
top: 100px;
}
路径总和