Sum Root to Leaf Numbers
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 3
The root-to-leaf path
The 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
./** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { void sumNumbersInt(TreeNode *root, string path, int &pathSum) { if (!root) return; if (!root->left && !root->right) { path+=to_string(root->val); pathSum+=atoi(path.c_str()); } string currentPath = path + to_string(root->val); sumNumbersInt(root->left, currentPath, pathSum); sumNumbersInt(root->right, currentPath, pathSum); } public: int sumNumbers(TreeNode *root) { int pathSum=0; string path; if (!root) return 0; if (!root->left && !root->right) return root->val; sumNumbersInt(root, path, pathSum); return pathSum; } };
No comments:
Post a Comment