From 8948320b2b361625dbff4c2b83f1d0d79c6e9985 Mon Sep 17 00:00:00 2001 From: Aanya Jain Date: Mon, 6 Apr 2026 10:49:01 +0530 Subject: [PATCH] Implement binary tree construction from traversals --- ..._Tree_from_Inorder_and_Postorder_Traversal | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 C++/106_Construct_Binary_Tree_from_Inorder_and_Postorder_Traversal diff --git a/C++/106_Construct_Binary_Tree_from_Inorder_and_Postorder_Traversal b/C++/106_Construct_Binary_Tree_from_Inorder_and_Postorder_Traversal new file mode 100644 index 0000000..73bc77b --- /dev/null +++ b/C++/106_Construct_Binary_Tree_from_Inorder_and_Postorder_Traversal @@ -0,0 +1,34 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + TreeNode* build(int poststrt,int postend,int instrt,int inend,vector& postorder, vector& inorder,unordered_map &mp){ + if(poststrt>postend || instrt>inend){ + return NULL; + } + TreeNode* root = new TreeNode(postorder[postend]); + int indx = mp[postorder[postend]]; + int remin = indx-instrt; + root->left = build(poststrt, poststrt+remin-1, instrt, indx-1, postorder, inorder, mp); + root->right = build(poststrt+remin, postend-1, indx+1, inend, postorder, inorder, mp); + return root; + } + + TreeNode* buildTree(vector& inorder, vector& postorder) { + int n = postorder.size(); + unordered_map mp; + for(int i = 0;i