129. 求根节点到叶节点数字之和
129. 求根节点到叶节点数字之和
给你一个二叉树的根节点
root
,树中每个节点都存放有一个 0
到 9
之间的数字。每条从根节点到叶节点的路径都代表一个数字:
- 例如,从根节点到叶节点的路径
1 -> 2 -> 3
表示数字123
。
计算从根节点到叶节点生成的 所有数字之和 。
叶节点 是指没有子节点的节点。
示例 1:

1->2
12
1->3
13
25
示例 2:

4->9->5
4->9->1
4->0
1026
提示:
- 树中节点的数目在范围
[1, 1000]
内 0 <= Node.val <= 9
- 树的深度不超过
10
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 void preOrder(TreeNode *root, int sum, vector<int> &answer) { 15 if (root == nullptr) { 16 return; 17 } 18 sum = sum * 10 + root->val; 19 if (root->left == nullptr && root->right == nullptr) { 20 answer.push_back(sum); 21 } 22 preOrder(root->left, sum, answer); 23 preOrder(root->right, sum, answer); 24 return; 25 } 26 int sumNumbers(TreeNode* root) { 27 int sum = 0; 28 if (root == nullptr) { 29 return sum; 30 } 31 vector<int> answer; 32 preOrder(root, sum, answer); 33 for (auto &val : answer) { 34 sum += val; 35 } 36 return sum; 37 } 38 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理