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 };
复制代码

 

posted @   跳动的休止符  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示