本文主要是介绍力扣每日一题129:从根节点到叶子节点的和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
中等
相关标签
相关企业
给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。
每条从根节点到叶节点的路径都代表一个数字:
- 例如,从根节点到叶节点的路径
1 -> 2 -> 3表示数字123。
计算从根节点到叶节点生成的 所有数字之和 。
叶节点 是指没有子节点的节点。
示例 1:

输入:root = [1,2,3] 输出:25 解释: 从根到叶子节点路径1->2代表数字12从根到叶子节点路径1->3代表数字13因此,数字总和 = 12 + 13 =25
示例 2:

输入:root = [4,9,0,5,1] 输出:1026 解释: 从根到叶子节点路径4->9->5代表数字 495 从根到叶子节点路径4->9->1代表数字 491 从根到叶子节点路径4->0代表数字 40 因此,数字总和 = 495 + 491 + 40 =1026
提示:
- 树中节点的数目在范围
[1, 1000]内 0 <= Node.val <= 9- 树的深度不超过
10
通过次数 271.5K
提交次数 384.4K
通过率 70.6%
思路
dfs遍历一次记录每个路径的值就行。
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int sum=0;void dfs(TreeNode* root,int path){if(!root) return;if(!root->left&&!root->right){path=10*path+root->val;sum+=path;return;}path=10*path+root->val;dfs(root->left,path);dfs(root->right,path);}int sumNumbers(TreeNode* root) {int path=0;dfs(root,0);return sum;}
};
这篇关于力扣每日一题129:从根节点到叶子节点的和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!