leetcode 129. 求根到叶子节点数字之和

2019-04-19  本文已影响0人  topshi

题目描述

给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。
例如,从根到叶子节点路径 1->2->3代表数字 123
计算从根到叶子节点生成的所有数字之和。
说明: 叶子节点是指没有子节点的节点。
相关话题: 树、深度优先搜索    
难度:
 中等

示例1:

示例2:

思路:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int sumNumbers(TreeNode root) {
        return sumNumbers(root, 0);
    }
    public int sumNumbers(TreeNode root, int sum){
        if(root == null) return 0;
        sum = sum * 10 + root.val;
        if(root.left == null && root.right == null)
            return sum;
        return sumNumbers(root.left,sum) + sumNumbers(root.right,sum);
    }
}

总结:递归算法将大问题看小的思路实在是在奇妙了。

上一篇 下一篇

猜你喜欢

热点阅读