leetcode 86: Sum Root to Leaf Numbers
来源:互联网 发布:免备案空间和域名购买 编辑:程序博客网 时间:2024/04/28 22:17
Sum Root to Leaf Numbers2 days
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 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 {public: int sumNumbers(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root==NULL) return 0; return sumRec(root, 0); } private: int sumRec(TreeNode *root, int presum) { int x = presum*10 + root->val; if(root->left==NULL && root->right==NULL) { return x; } if(root->left==NULL) { return sumRec(root->right, x); } if(root->right==NULL) { return sumRec(root->left, x); } return sumRec(root->left, x) + sumRec(root->right, x); }};
wrong try. bottom up. should use top bottom
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int sumNumbers(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function if(root==null) return 0; Pair pair = sumRec( root); return pair.first; } private Pair sumRec(TreeNode root) { if(root==null) { return new Pair(-1,0); } Pair left = sumRec(root.left); Pair right = sumRec(root.right); int x = root.val; int l = 0, r=0; if(left.first!=-1) { l = (int)(root.val * Math.pow(10,left.second)) + left.first; } else { l = 0; } if(right.first !=-1) { r = (int)(root.val * Math.pow(10,right.second)) + right.first; } else { r = 0; } return new Pair( l+r, (left.second>right.second ? left.second+1 : right.second+1) ); } static class Pair{ public int first; public int second; public Pair(int x, int y) {first=x; second=y;} }}
correct one:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int sumNumbers(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function return sumRec(root, 0); } private int sumRec(TreeNode root, int num) { if(root==null) { return 0; } num = num*10 + root.val; int left=0, right=0; if(root.left!=null) left = sumRec(root.left, num); if(root.right!=null) right = sumRec(root.right, num); int res = left + right; return res==0? num : res; }}
final version:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int sumNumbers(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function if(root==null) return 0; return sumRec(root, 0) ; } private int sumRec(TreeNode root, int parentSum) { int x = parentSum*10 + root.val; int l=0, r=0; if(root.left!=null) { l = sumRec(root.left, x); } if(root.right!=null) { r = sumRec(root.right, x); } if( l==0 && r==0) return x; else return l+r; }}
- leetcode 86: Sum Root to Leaf Numbers
- [LeetCode] Sum root to leaf numbers
- LeetCode : Sum Root to Leaf Numbers
- [leetcode] Sum Root to Leaf Numbers
- 【leetcode】Sum Root to Leaf Numbers
- LeetCode之sum root to leaf numbers
- leetcode:Sum Root to Leaf Numbers
- [LeetCode]Sum Root to Leaf Numbers
- [Leetcode]Sum Root to Leaf Numbers
- [leetcode]Sum Root to Leaf Numbers
- leetcode Sum Root to Leaf Numbers
- LeetCode-Sum Root to Leaf Numbers
- [leetcode] Sum Root to Leaf Numbers
- LeetCode 129: Sum Root to Leaf Numbers
- LeetCode - Sum Root to Leaf Numbers
- leetcode之Sum Root to Leaf Numbers
- LeetCode | Sum Root to Leaf Numbers
- LeetCode - Sum Root to Leaf Numbers
- The law of Demeter
- Maya Mel 居中枢轴命令
- leetocde 85: Longest Consecutive Sequence
- [Leetcode] Longest Valid Parentheses
- Liferay get Journal Article based on Journal Structure name
- leetcode 86: Sum Root to Leaf Numbers
- space
- LeetCode17: 4Sum
- Leetcode: Flatten Binary Tree to Linked List
- How to find a node by its text using the GetNodeByText method
- 第一个WINAPI WinMain程序
- 批处理怎样判断一个txt文件是否为空?
- 继承与组合优缺点浅析
- leetcode Regular Expression Matching