diff --git a/Problem_1.py b/Problem_1.py new file mode 100644 index 00000000..f38297ce --- /dev/null +++ b/Problem_1.py @@ -0,0 +1,25 @@ +# Definition for a binary tree node. +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right +class Solution: + def buildTree(self, inorder, postorder): + n = len(inorder) + self.index = n - 1 + self.in_map = {} + for i in range(n): + ele = inorder[i] + self.in_map[ele] = i + return self.helper(postorder, 0, n - 1) + + def helper(self, postorder, start, end): + if start > end: + return None + root = TreeNode(postorder[self.index]) + idx = self.in_map[root.val] + self.index -= 1 + root.right = self.helper(postorder, idx + 1, end) + root.left = self.helper(postorder, start, idx - 1) + return root diff --git a/Problem_2.py b/Problem_2.py new file mode 100644 index 00000000..e71c2f1b --- /dev/null +++ b/Problem_2.py @@ -0,0 +1,17 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def sumNumbers(self, root): + return self.helper(root, 0) + + def helper(self, root, prevSum): + if not root: + return 0 + prevSum = prevSum * 10 + root.val + if not root.left and not root.right: + return prevSum + return self.helper(root.left, prevSum) + self.helper(root.right, prevSum)