129. Sum Root to Leaf Numbers
2016-12-29 16:53
302 查看
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,
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.
解法一:
解法二:
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 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 a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int sumNumbers(TreeNode* root) { return dfs(root, 0); } int dfs(TreeNode *root, int sum) { if (root == NULL) return 0; if (!root->left && !root->right) return sum * 10 + root->val; return dfs(root->left, sum * 10 + root->val) + dfs(root->right, sum * 10 + root->val); } };
解法二:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int sumNumbers(TreeNode* root) { vector<string> result; if (root == NULL) return 0; sumNumbers(root, result, to_string(root->val)); int sum = 0; for (int i = 0; i < result.size(); i++) { sum += atoi(result[i].c_str()); } return sum; } void sumNumbers(TreeNode *root, vector<string> &result, string str) { if (root && !root->left && !root->right) { result.push_back(str); return; } if (root->left) sumNumbers(root->left, result, str + to_string(root->left->val)); if (root->right) sumNumbers(root->right, result, str + to_string(root->right->val)); } };
相关文章推荐
- 129. Sum Root to Leaf Numbers
- Leetcode #129 Sum Root to Leaf Numbers
- leetcode_129题——Sum Root to Leaf Numbers(基于DFS的递归)
- Leetcode#129 Sum Root to Leaf Numbers
- [LeetCode129] Sum Root to Leaf Numbers
- [LeetCode 129] Sum Root to Leaf Numbers
- [LeetCode]129 Sum Root to Leaf Numbers
- 【LeetCode-面试算法经典-Java实现】【129-Sum Root to Leaf Numbers(全部根到叶子结点组组成的数字相加)】
- 129. Sum Root to Leaf Numbers
- 129. Sum Root to Leaf Numbers
- LeetCode 129: Sum Root to Leaf Numbers 树的遍历
- leetcode_question_129 Sum Root to Leaf Numbers
- 129、Sum Root to Leaf Numbers
- leetcode || 129、Sum Root to Leaf Numbers
- leetcode——129——Sum Root to Leaf Numbers
- 129. Sum Root to Leaf Numbers
- leetcode129---Sum Root to Leaf Numbers
- LeetCode 129: Sum Root to Leaf Numbers
- LeetCode(129)SumRoottoLeafNumbers
- [LeetCode129]Sum Root to Leaf Numbers