Leetcode129. 求根节点到叶节点数字之和
Leetcode129. 求根节点到叶节点数字之和
题目描述
给你一个二叉树的根节点 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
解题思路
这道题的思路比较简单,就是树的遍历加一点改动。我们需要记忆每一条路径所形成的数字和总体的答案,并且当得到一条路径所代表的数字时,需要更新总体的答案。
需要改动和注意的地方主要有:
- 在结点为空的时候仅需要返回,在当前结点为叶子结点的时候才更新总体的答案。这样,可以避免重复的计算;
- 因为在前结点为叶子结点的时候才更新总体的答案,所以需要注意
1 | if(root->left==nullptr&&root->right==nullptr) |
这段判断更新总体答案的代码的位置。
具体实现细节见示例代码。
示例代码
1 | void getSum(TreeNode* root,int& ans,int pathSum) |
时间复杂度为:,为二叉树的结点个数
空间复杂度为:,为二叉树的结点个数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 二进制的叮当喵!