首页 > 代码库 > [LeetCode] 129 Sum Root to Leaf Numbers 求根到叶节点数字之和
[LeetCode] 129 Sum Root to Leaf Numbers 求根到叶节点数字之和
此题题意是求所有从根结点到叶节点的路径转化为数字后之和。
因为是二叉树,容易想到是用递归求解。
整体思想是从根到叶子进行遍历,其中不断保存当前的中间结果(上一层的结果乘以10后加上当前层根节点的数值)并通过参数向下传递。。。
到达叶子节点时可以逐层返回最终结果。解法不难,但有几个细节需要考虑清楚。
1)可以用递归函数dfs的参数表内置的返回和来返回数值,也可以直接用dfs返回值,对应于以下两种定义:
void dfs(TreeNode *root, int &sum, int pre);
int dfs(TreeNode *root, int pre);
2) 因为是从根到叶子节点的路径和,所以需要在判断为叶子节点时返回数值。
3) 当前节点为空时,直接返回0,这句话可以在递归时省略判断子树是否非空的语句并且避免将非叶子节点的路径加入计算。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 int sumNumbers(TreeNode* root) { 13 int pre = 0; 14 return dfs(root, pre); 15 } 16 int dfs(TreeNode *root, int pre){ 17 if(!root) return 0; 18 int sum = pre*10 + root->val; 19 if(!root->left && !root->right) return sum; 20 return dfs(root->left, sum) + dfs(root->right, sum); 21 } 22 };
[LeetCode] 129 Sum Root to Leaf Numbers 求根到叶节点数字之和
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。