LC 129.求根节点到叶节点数字之和
思路
pre_sum代表之前改路径上所有数字的和dfs(root, pre_sum)代表以root为根节点的子树的所有数字之和dfs(当前节点) = (pre_sum * 10 + dfs(右子树)) + (pre_sum * 10 + 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 sumNumbers(TreeNode* root) {return dfs(root, 0);}int dfs(TreeNode* root, int pre_sum) {if (!root) {return 0;}// 如果是叶子节点int ans = 0;if (!root->left && !root->right) {return pre_sum * 10 + root->val;}if (root->left) {int cur_sum = pre_sum * 10 + root->val;ans += dfs(root->left, cur_sum);}if (root->right) {int cur_sum = pre_sum * 10 + root->val;ans += dfs(root->right, cur_sum);}return ans;}};
