From 2ba538c9658dfc1048f28f9459f4719f982abdf3 Mon Sep 17 00:00:00 2001 From: PrakarshKamal Date: Thu, 26 Feb 2026 14:10:55 -0500 Subject: [PATCH] Complete Trees-2 --- ConstructBTFromPostAndIn.java | 46 +++++++++++++++++++++++++++++++++++ SumRootToLeaf.java | 33 +++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 ConstructBTFromPostAndIn.java create mode 100644 SumRootToLeaf.java diff --git a/ConstructBTFromPostAndIn.java b/ConstructBTFromPostAndIn.java new file mode 100644 index 00000000..1fefe0a1 --- /dev/null +++ b/ConstructBTFromPostAndIn.java @@ -0,0 +1,46 @@ +import java.util.*; + +// Recursion, O(n) time, O(h) space +class Solution { + private int postIndex; + + public TreeNode buildTree(int[] postorder, int[] inorder) { + postIndex = postorder.length-1; + Map map = new HashMap<>(); + + for (int i = 0; i < inorder.length; i++) { + map.put(inorder[i], i); + } + + return helper(postorder, 0, inorder.length-1, map); + } + + private TreeNode helper(int[] postorder, int start, int end, Map map) { + if (start > end) return null; + + TreeNode root = new TreeNode(postorder[postIndex]); + postIndex--; + + int mid = map.get(root.val); + + root.right = helper(postorder, mid+1, end, map); + root.left = helper(postorder, start, mid-1, map); + + return root; + } +} + + +class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode() {} + TreeNode(int val) { this.val = val; } + TreeNode(int val, TreeNode left, TreeNode right) { + this.val = val; + this.left = left; + this.right = right; + } +} + \ No newline at end of file diff --git a/SumRootToLeaf.java b/SumRootToLeaf.java new file mode 100644 index 00000000..e5bbfa1f --- /dev/null +++ b/SumRootToLeaf.java @@ -0,0 +1,33 @@ +// O(n) time, O(n) space +class Solution { + public int sumNumbers(TreeNode root) { + return helper(root, 0); + } + + private int helper(TreeNode root, int currSum) { + if (root == null) return 0; + + currSum = currSum * 10 + root.val; + + if (root.left == null && root.right == null) { + return currSum; + } + int left = helper(root.left, currSum); + int right = helper(root.right, currSum); + + return left + right; + } +} + +class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode() {} + TreeNode(int val) { this.val = val; } + TreeNode(int val, TreeNode left, TreeNode right) { + this.val = val; + this.left = left; + this.right = right; + } +} \ No newline at end of file