leetcode—sum root to leaf number
题目如下:
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.An example is the root-to-leaf path 1->2->3 which represents the number 123.Find the total sum of all root-to-leaf numbers.For example,1/ \2 3The root-to-leaf path 1->2 represents the number 12.The root-to-leaf path 1->3 represents the number 13.Return the sum = 12 + 13 = 25.
解题思路:
一个带有记录功能的DFS,随时记录当前数字,当前和,返回即可
代码如下:
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int sumNumbers(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int sum = 0;
int curNumber = 0;
sumNumbers_my(root,curNumber,sum);return sum;
}void sumNumbers_my(TreeNode *root,int &curNumber,int &sum){if(root == NULL)return;curNumber = curNumber*10+root->val;int curNumber_bk = curNumber;
if(root ->left== NULL&&root->right ==NULL)
{sum+= curNumber;return;
}sumNumbers_my(root->left,curNumber,sum);curNumber = curNumber_bk;sumNumbers_my(root->right,curNumber,sum);return;
}};