LeetCode OJ:Sum Root to Leaf Numbers
2014-01-17 14:58
375 查看
Sum Root to Leaf Numbers
Total Accepted: 5395 TotalSubmissions: 19143My Submissions
Given a binary tree containing digits from
0-9only,
each root-to-leaf path could represent a number.
An example is the root-to-leaf path
1->2->3which
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->2represents
the number
12.
The root-to-leaf path
1->3represents 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) {} * }; */ #include <algorithm> class Solution{ vector<vector<int>> SUM; int length; public: int add(vector<vector<int>> store){ vector<int> total; int v,c=0; for(int i=1;i<=length;i++){ v=c;; for(int j=0;j<store.size();j++){ if(store[j].size()>=i){ v+=store[j][store[j].size()-i]; } } c=v/10; total.push_back(v%10); } if(c)total.push_back(c); string sum=""; char t[4]; for(int i=total.size()-1;i>=0;i--){ sprintf(t,"%d",total[i]); sum+=t; } return atoi(sum.c_str()); } void dfs(TreeNode *root,vector<int> store){ if(root==NULL)return; store.push_back(root->val); if(root->left==NULL&&root->right==NULL){ length=length<store.size()?store.size():length; SUM.push_back(store); return; } dfs(root->left,store); dfs(root->right,store); } int sumNumbers(TreeNode *root){ if(!root)return 0; vector<int> t; length=0; dfs(root,t); return add(SUM); } };
简约版
/** * 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) { return dfs(root,0); } private: int dfs(TreeNode *root,int sum){ if(!root)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); } };
相关文章推荐
- LeetCode OJ - Sum Root to Leaf Numbers
- LeetCode OJ 之Sum Root to Leaf Numbers (根到叶上数字的和)
- LeetCode OJ - Sum Root to Leaf Numbers
- 【LeetCode OJ】Sum Root to Leaf Numbers
- LeetCode OJ:Sum Root to Leaf Numbers(根到叶节点数字之和)
- Leetcode OJ 129 Sum Root to Leaf Numbers [Medium]
- 【LeetCode OJ】Sum Root to Leaf Numbers
- LeetCode OJ--Sum Root to Leaf Numbers
- leetcode Sum Root to Leaf Numbers 树
- Sum Root to Leaf Numbers -- LeetCode
- LeetCode129—Sum Root to Leaf Numbers
- Sum Root to Leaf Numbers
- leetcode || 129、Sum Root to Leaf Numbers
- LeetCode: Sum Root to Leaf Numbers [129]
- LeetCode Sum Root to Leaf Numbers
- Sum Root to Leaf Numbers
- 【leetcode】Sum Root to Leaf Numbers
- Sum Root to Leaf Numbers
- Sum Root to Leaf Numbers
- sum-root-to-leaf-numbers