题目如下:
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() functionint 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;}};