Sum Root to Leaf Numbers 二叉树的path 和

来源:互联网 发布:360n4s 清除数据 编辑:程序博客网 时间:2024/06/13 05:35

Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

An example is the root-to-leaf path 1->2->3 which represents the number 123.

Find the total sum of all root-to-leaf numbers.

For example,

    1   / \  2   3

The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.

Return the sum = 12 + 13 = 25.


将每条path的路径变成一个number, 然后将所有的path构成的number加起来。

依旧是经典的深度优先遍历问题。

可以用递归来求解,递归终止的条件是这个节点是叶子节点(node.left = null && node.right = null )


在这里,我是用一个变量totalSum 来累计所有的path 和。

用一个变量curSum 来累计当前路径的和。


运行时间:



代码:

public class SumRoottoLeafNumbers {    private int totalSum = 0;    private int curSum = 0;    public int sumNumbers(TreeNode root) {        if (root == null) {            return 0;        }        doSum(root);        return totalSum;    }    private void doSum(TreeNode root) {        if (root.left == null && root.right == null) {            totalSum += curSum * 10 + root.val;        }        int pre = curSum;        curSum = curSum * 10 + root.val;        if (root.left != null) {            doSum(root.left);        }        if (root.right != null) {            doSum(root.right);        }        curSum = pre;    }}



1 0
原创粉丝点击