计算二叉树中的路径和

时间:2017-03-27 03:51:55

标签: java recursion data-structures binary-tree

尝试从二叉树中的根计算叶子的路径总和。似乎没有工作,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;
}

1 个答案:

答案 0 :(得分:0)

你只是通过调用方法给孩子们抛出的值。我稍微改写了你的代码:

null

这是基本的递归:对于sum节点,定义的答案是假的,叶是另一个极端情况,一般情况试图在两个分支之一中取得成功。

P.S。从问题和方法签名中不是很清楚你想要实现什么,但我想你检查是否存在从根到任何叶子的路径,其中给定的iframe#instagram-embed-0 { float:right; position: relative; right: 100px; top: 100px; } 路径总和