Sum Root to Leaf Numbers
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
.Thoughts:
Traverse the binary tree by depth-first and record the numbers. When the leaf is met, the accumulated value is added up.
Solution:
- /**
- * 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 Sum;
- void TraverseProc(const TreeNode* node, int value)
- {
- const int VAL = value * 10 + node->val;
- if (node->left == nullptr && node->right == nullptr)
- Sum += VAL; // at a leaf
- else
- {
- if (node->left != nullptr)
- TraverseProc(node->left, VAL);
- if (node->right != nullptr)
- TraverseProc(node->right, VAL);
- }
- }
- int sumNumbers(TreeNode *root) {
- Sum = 0;
- if (root != nullptr)
- TraverseProc(root, 0);
- return Sum;
- }
- };
No comments:
Post a Comment