【Leetcode】Sum Root to Leaf (Sum)

来源:互联网 发布:omnigraffle mac 编辑:程序博客网 时间:2024/05/21 14:00

Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

For example:
Given the below binary tree,

       1      / \     2   3

Return 6.

递归思路,依次访问每个节点,记录根到叶子的总和,然后全部相加即可。

压栈思路:先左节点全入,和依次递增,然后左出右入。这里只需要用和运算来判断,因为需要找所有路径的总和。

注意:第一次压栈应该压入helper(root, 0), 而不是helper(root, root.val),因为后者会让root.left(root.right)与求和的root.left处于同一个等级,空指针不可避免。而前者是让root.left(root.right)与求和的root处于同一个等级,可以有效避免空指针问题。

    public int sumNumbers(TreeNode root) {        if(root==null)            return 0;        return helper(root, 0);    }        public int helper(TreeNode root, int sum) {        if(root==null)            return 0;        if(root.left==null&&root.right==null)            return sum*10+root.val;        int left=helper(root.left, sum*10+root.val);        int right=helper(root.right, sum*10+root.val);        return left+right;    }


0 0
原创粉丝点击