129. 求根节点到叶节点数字之和
1. 题目
给你一个二叉树的根节点 root
,树中每个节点都存放有一个 0
到 9
之间的数字。
每条从根节点到叶节点的路径都代表一个数字:
- 例如,从根节点到叶节点的路径
1 -> 2 -> 3
表示数字123
。
计算从根节点到叶节点生成的 所有数字之和 。
叶节点 是指没有子节点的节点。
示例 1:
1 | 输入:root = [1,2,3] |
示例 2:
1 | 输入:root = [4,9,0,5,1] |
提示:
- 树中节点的数目在范围
[1, 1000]
内 0 <= Node.val <= 9
- 树的深度不超过
10
2. 思路
- 已知题目要求二叉树根节点到叶子节点的数字之和,意思是在非叶子节点时,仅对值进行
val * 10 + node.val
- 直到叶子节点时,才会将值与总值进行相加
- 新建
helper
函数,入参是节点root
和初始值val
,当root
为null
时,返回的值为0 - 过程中,将
val
值更新为val * 10 + root.val
,并且当root
为叶子节点时,返回val
- 如果当前节点非叶子节点,则返回递归调用
helper(root.left, val) + helper(root.right, val)
的值
3. 代码
1 | /** |
4. 复杂度
- 时间复杂度:
O(n)
- 空间复杂度:
O(1)