LeetCode 129: Sum Root to Leaf Numbers.
Given a binary tree containing digits from0-9
Only, each root-to-leaf path cocould represent a number.
An example is the root-to-leaf path1->2->3
Which represents the number123
.
Find the total sum of all root-to-leaf numbers.
For example,
1 / \ 2 3
The root-to-leaf path1->2
Represents the number12
.
The root-to-leaf path1->3
Represents the number13
.
Return the sum = 12 + 13 =25
.
Subscribe to see which companies asked this question
class Solution {public:int sumNumbers(TreeNode* root) {return dfs(root, 0);}int dfs(TreeNode* root, int sum){if (root == 0) return 0;if (root->left == NULL && root->right == NULL){return sum * 10 + root->val;}return dfs(root->left, sum * 10 + root->val) + dfs(root->right, sum * 10 + root->val);}};
#include
#include
#include
using namespace std;//Definition for binary treestruct 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 == 0) return 0;if (root->left == NULL && root->right == NULL){return sum * 10 + root->val;}return dfs(root->left, sum * 10 + root->val) + dfs(root->right, sum * 10 + root->val);}};void createTree(TreeNode *&root){int i;cin >> i;if (i != 0){root = new TreeNode(i);if (root == NULL)return;createTree(root->left);createTree(root->right);}}int main(){Solution s;TreeNode *root;createTree(root);int path = s.sumNumbers(root); cout << path <