diff --git a/problem1.py b/problem1.py new file mode 100644 index 00000000..364271cc --- /dev/null +++ b/problem1.py @@ -0,0 +1,29 @@ +# problem 1 +# 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: List[int], postorder: List[int]) -> Optional[TreeNode]: + if len(postorder) == 0: + return None + root_val = postorder[-1] + root_val_idx = -1 + for i in range(len(inorder)): + if inorder[i] == root_val: + root_val_idx = i + break + + left_inorder = inorder[0:root_val_idx] + right_inorder = inorder[root_val_idx+1:] + + left_postorder = postorder[0:len(left_inorder)] + right_postorder = postorder[len(left_inorder):-1] + + node = TreeNode(root_val) + node.left = self.buildTree(left_inorder,left_postorder) + node.right = self.buildTree(right_inorder,right_postorder) + + return node \ No newline at end of file diff --git a/problem2.py b/problem2.py new file mode 100644 index 00000000..e218672f --- /dev/null +++ b/problem2.py @@ -0,0 +1,23 @@ +# problem 2 + +# 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 helper(self,root_node,count): + if root_node is None: + return + count = (count * 10) + root_node.val + if root_node.left is None and root_node.right is None: + self.count+=count + self.helper(root_node.left,count) + self.helper(root_node.right,count) + + def sumNumbers(self, root: Optional[TreeNode]) -> int: + self.count = 0 + self.helper(root,0) + return self.count \ No newline at end of file