Please likeeee, shareeee and subscribeeeeeeee :) Also follow me at Insta: Striver_79
@meme_eternity3 ай бұрын
Relevel pe login otp nhi receive ho rahi..... fix it
@SchrodingerMan2 жыл бұрын
for those who are getting TLE - pass the map in function with refernce ..................... it happens beacause when we pass map without refernce it start to copy all the value........ whereas if we pass the reference it only take base address................. so saving the time :-)
@herculean67482 жыл бұрын
Thanks man!!! I couldn't find why it was giving TLE
@SchrodingerMan2 жыл бұрын
@@herculean6748 welcome 💪
@AnkitKumarGupta03 Жыл бұрын
Thank you bro.
@anshulkumarneekhara93779 ай бұрын
Thanks man
@misterbean66743 ай бұрын
saved my life.
@roushankumar768410 ай бұрын
Free me Aisa explanation koi nii dega. You are real life hero.
@shubhamkumar-hx1fb3 ай бұрын
bhut log mil jayenge ye tumhari fault hai....ager tum aankhen band karke khojoge to koi nhin dikhega
@ransh-sahu3 ай бұрын
@@shubhamkumar-hx1fb Searched the whole youtube being comfortable and understanding it very well . The consistency striver followed is unmatched and its true none is better than striver if u r targeting fang or higher . There is always a shortage of content or room for subscription. Praise striver rather than being cool lgunga ase bolunga
coding ninja ka course liya tha usme iski explanation smjh nhi aayi lekin apki video dekhi aur 1 shot me smjh aagai . thanks striver . u teach like u r my friend and not a teacher which i like most bout ur videos !!
@gouravchaki7990 Жыл бұрын
Out of all these coding I would just provide method to prepare Biriyani!! Step 1 Prepare saffron-kewra water and chop veggies To make a delightful chicken biryani dish, firstly soak saffron in water to prepare saffron water (one tsp saffron can be soaked in 1/4 cup water). Next, mix kewra drops in water and mix well to make kewra water. Set them aside for later usage. Now, chop the onion and coriander leaves and keep them aside. Step 2 Saute the onions Meanwhile, heat olive oil in a deep bottomed pan. Once the oil is hot enough, add cumin seeds, bay leaf, green cardamom, black cardamom, cloves in it, and saute for about a minute. Then, add chopped onion to it and saute until pink. Now, add chicken into it with slit green chillies, turmeric, salt to taste, ginger-garlic paste, red chilli powder and green chilli paste. Mix well all the spices and cook for 2-3 minutes. Then, add hung curd into it and give a mix. (Make sure the chicken is washed properly and patted dry before adding it to the dish) Step 3 Cook biryani on low heat for 5-6 minutes Turn the flame to medium again and add garam masala in it along with ginger julienned, coriander and mint leaves. Add kewra water, rose water and 1 tsp saffron water in it. Cook till the chicken is tender. Then add 1 cup cooked rice and spread evenly. Then add the remaining saffron water and pour ghee over it. You can now cook the dish without the lid or cover it with a lid to give a dum-effect due to the steam formation. Step 4 Serve hot chicken biryani with your favourite chutney or raita Cook for 15-20 minutes with a closed lid and garnish with 1 tbsp fried onions and coriander leaves. Serve hot chicken biryani with raita of your choice. Enjoy!
@NitishGautam-g1jАй бұрын
Bro we need more teachers like you 😢😢😢 who actually can think from perspective of a beginner and explain step by step
@manaskhare4122 жыл бұрын
It took a while to understand this tricky problem, but now it's completely clear. Thank you striver, kudos for such amazing content.
@alexrcrew19752 жыл бұрын
haha nice going at present whichtopic youaredoing
@cur92lyone2 жыл бұрын
I spent two days trying to understand this Algo. Finally, your video made me understand it. Thanks. :)
@rushidesai28365 ай бұрын
I can understand. Two of the most important quesitons - Tree from Preorder and Inorder, and tree from inorder and postorder.
@natanshisharma88284 ай бұрын
If you are confused how the they are storing addresses, its during backtracking that the nodes addresses are being stored not during creation of the nodes.
@ShreyaJain-1808 Жыл бұрын
Here is the code to deal with duplicate elements we use a queue so that the element that occurs later in the in-order get pushed at the front and keep popping the index that are processed, we now get a correct tree formed according to the preorder traversal class Solution{ public: Node* solve(int in[],int in_start,int in_end,int pre[],int pre_start,int pre_end,map &pos) { if(pre_start>pre_end|| in_start>in_end) { return NULL; } int inroot=pos[pre[pre_start]].front(); pos[pre[pre_start]].pop(); int elem=inroot-in_start; Node* root=new Node(pre[pre_start]); root->left=solve(in,in_start,inroot-1,pre,pre_start+1,pre_start+elem,pos); root->right=solve(in,inroot+1,in_end,pre,pre_start+elem+1,pre_end,pos); return root; } Node* buildTree(int in[],int pre[], int n) { // Code here if(n==0) return NULL; map pos; for(int i=0;i
@meetmandhane Жыл бұрын
Will the time complexity of this approach remain same i.e. O(N)?
@ayushgautam169 Жыл бұрын
yeah exactly what i did i took a list and removed from front, like we can take a queue
@i-am-darshil Жыл бұрын
Is a unique tree even possible in case of duplicate elements? 2 trees can be formed with the same inorder and preorder Inorder - 1 2 2 3 2 Preorder - 2 2 1 2 3
@tanishq2766 Жыл бұрын
I guess we don’t need a map, if we can split them as we can always split into two parts.
@trojanhorse82784 ай бұрын
@@i-am-darshil Correct, You can't always construct a unique binary tree when the keys are repeated. EX is Pre : 10 10 10 In : 10 10 10 , now based on your choice of root in in-order you will get different tree structures. Hence only if the interviewer wants to check whether you know this fact or not he might ask this question but once you explain to him that we can't always create a unique tree without defining the rule to choose the root from in-order, he mostly will get satisfied and won't ask you to actually write a code.
@roushankumar768410 ай бұрын
You have changed the teachers image as spreading skill without taking any money❤
@anubhav4522 жыл бұрын
/** * 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) {} * }; */ /* JUST FINDING THE POSITION OF THE FIRST ELEMENT IN THE PREORDER VECTOR IN THE INORDER VECTOR THEN USING THE POSITION OF THAT ELEMENT TO FIND THE LEFT SUBTREE AND THE RIGHT SUBTREE */ class Solution { public: int find_pos(vectorv,int x){ for(int i=0;ileft=buildTree(l1,l2); root->right=buildTree(r1,r2); return root; } };
@stith_pragya Жыл бұрын
UNDERSTOOD...Thank You So Much for this wonderful video...........🙏🙏🙏
@Parth.Deshpande3 жыл бұрын
For interviewbit solution , pass the map by reference TreeNode* buildT(vector &A,int prestart,int preend,vector &B,int instart,int inend , map& mp){ if(prestart>preend || instart>inend){ return NULL; } TreeNode* root = new TreeNode(A[prestart]); int inroot = mp[root->val]; int leftnums = inroot - instart; root->left = buildT(A,prestart+1,prestart+leftnums,B,instart,inroot-1,mp); root->right = buildT(A,prestart+leftnums+1,preend,B,inroot+1,inend,mp); return root; } TreeNode* Solution::buildTree(vector &A, vector &B) { map mp; for(int i=0;i
@priyanshurai4602 жыл бұрын
Can you please tell me why the time limit exceeds when the map is passed by value?
@Star_Gazer_422 жыл бұрын
@@priyanshurai460 coz everytime the function gets called it creates a new map with same name at another memory location with same values. So these operations take time and space which is alot, thats why TLE.
@nilesh694208 ай бұрын
Great explanation as always. The last dry run just before showing code was very very helpful.
@karthik-varma-1579Ай бұрын
Java Code:- class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { HashMap hm = new HashMap(); int n = inorder.length; for(int i=0;ipreEnd || inStart>inEnd) return null; TreeNode root = new TreeNode(preorder[preStart]); int hMap = hm.get(root.val); int numsLeft = hMap-inStart; root.left = builder(inorder,inStart,hMap-1,preorder,preStart+1,preStart+numsLeft,hm); root.right = builder(inorder,hMap+1,inEnd,preorder,preStart+numsLeft+1,preEnd,hm); return root; } }
@agnijeetsharma6 ай бұрын
here is simple version of code class Solution { public: TreeNode* build(vector& preorder, vector& inorder, int& preStart, int inStart, int inEnd,unordered_map&mp) { if (inStart > inEnd) return nullptr; TreeNode* curr = new TreeNode(preorder[preStart]); int pos=mp[preorder[preStart]]; preStart++; // Move to the next root in the preorder sequence curr->left = build(preorder, inorder, preStart, inStart, pos - 1,mp); curr->right = build(preorder, inorder, preStart, pos + 1, inEnd,mp); return curr; } TreeNode* buildTree(vector& preorder, vector& inorder) { unordered_mapmp; for(int i=0;i
@ss-pz4zh Жыл бұрын
THE BEST TREE series even though i have taken a paid course...still i am coming here to understand ...>God Bless u TUF
@sriharshas38899 ай бұрын
Superb Explanation ! Here in the code we should pass the map as reference otherwise we will get the memory limit exceeded.
@AppaniMadhavi8 ай бұрын
Thanks alot bhai!!. I didn't understood first but in other problems I need to use this, so I visited once again and now its clear cut for me thanks alot..
@lalitgaikwad72388 ай бұрын
You're The Real Life G.O.A.T i.e Greatest of All Times
@vinayrohitreddypadala270510 ай бұрын
Hey Striver, this algorithm is working for unique values but not for the repeated ones. Example:- inorder = [7 ,3 ,11 ,1 ,17 ,3 ,18] postorder = [1, 3, 7, 11, 3, 17, 18] And In this scenario i dont think inMap is kind of working.
@KandulaAsrith4 ай бұрын
someone please reply how to solve if the tree contain duplicate elements...
@gautamkrishnan99823 жыл бұрын
Keep Going Striver!! I am following your SDE Sheet to revise on the DSA concepts. Thank you so much for all your content.
@Cool962673 жыл бұрын
Which programming language you are using?
@mynk_rjpt2 жыл бұрын
@@Cool96267 c++
@9-teen772 жыл бұрын
did you complete it?
@akankshasinha33522 жыл бұрын
Thankyou striver 🥺 you’re a gem that all of us have got !!
This is one of insanely tricky problem of Binary Tree.
@sammy_yo5967 Жыл бұрын
C++ code to run on Leetcode: - class Solution { public: TreeNode* buildTree(vector& preorder,int preStart,int preEnd,vector& inorder,int inStart,int inEnd, map& inMp) { if(preStart > preEnd || inStart > inEnd) return NULL; TreeNode* root = new TreeNode(preorder[preStart]); int inRoot = inMp[root->val]; int numsLeft = inRoot - inStart; root ->left = buildTree(preorder,preStart+1,preStart+numsLeft,inorder,inStart,inRoot - 1,inMp); root -> right = buildTree(preorder,preStart+numsLeft+1,preEnd,inorder,inRoot+1,inEnd,inMp); return root; } TreeNode* buildTree(vector& preorder, vector& inorder) { map inMp; for(int i = 0; i < inorder.size(); i++) { inMp[inorder[i]] = i; } TreeNode* root = buildTree(preorder,0,preorder.size()-1,inorder,0,inorder.size()-1,inMp); return root; } };
@sri1994 ай бұрын
For duplicates value try dict of list to store all index of the element and pop the first one res = [] mmap = defaultdict(list) n = len(preorder) def build(preStart,preEnd,inStart,inEnd): if preStart > preEnd or inStart > inEnd: return None root = TreeNode(preorder[preStart]) orders = mmap[root.val] index = orders.pop(0) inRoot = index numsLeft = inRoot - inStart root.left = build(preStart+1,preStart+numsLeft,inStart,inRoot-1) root.right = build(preStart+numsLeft+1,preEnd,inRoot + 1,inEnd) return root for i in range(len(inorder)): mmap[inorder[i]].append(i) return build(0,n-1,0,n-1)
@KeigoEdits4 ай бұрын
I am shocked, that i came up with the solution to this problem in my first attempt, though runtime was low as i was searching index of root in inorder using linear search(though dividing the space in half after each recursive call) but its still O(n). Later saw in this video, that we can use hashmap for this purpose. Though indeed I couldn't have done without the intuition I got in earlier video of striver explaining unique binary question.
@TonyStark-ct8xd Жыл бұрын
This code doesn't work for duplicate values, gfg has updated their testcases.
@rushidesai2836 Жыл бұрын
Khud se try karna bhai, he is already putting out so much content for us.
@sarthak._v_13 күн бұрын
Best Lecture
@apmotivationakashparmar72223 күн бұрын
Thank you So much Striver !
@vaalarivan_p Жыл бұрын
3:30 - 3:35 CW : 12:40 - 17:01
@ankushsingh33922 жыл бұрын
Vro dus video dekhi but nhi hua apki video ka sirf first two minutes ke logic ko dekh kar samjh gya and done it🙃🙃
@nextnotification98578 ай бұрын
wrote the code in first attempt😀, i have made the map global to the class and thus no need to pass it again and again
@codding32world502 жыл бұрын
For TLE on leetcode just declare map public don't pass it in the function
@adarshpandey6222 жыл бұрын
Bro you saved my whole day
@saiprashanth2646 Жыл бұрын
Thank u so much bro.
@tejuschaturvedi6234 Жыл бұрын
you can also pass the map as reference when passing the map in function .
@prashukjain851910 ай бұрын
saved my time
@roushankumar768410 ай бұрын
Thankyou bhaiya for lifting me up❤.
@subhasishdas30112 жыл бұрын
in base case no need to check both in and pre any 1 check is enough
@iamnottech89184 ай бұрын
Superb explanation.
@sourabhsharma27462 жыл бұрын
This is toh another level explanation bhai. 👌👌 how can someone be so clear in his explanation.. btw amazing thanks bhai. love from punjab
@rushidesai28365 ай бұрын
Yeh baat pe bhangdaa ho jae! :)
@jotsinghbindra83174 ай бұрын
chki rkh kam bai🙌
@PratikShah1239 ай бұрын
Wonderful !! Btw, what if Tree contains duplicate values, where finding index out of InOrder will be a challenge..!
@sanchitsanyam73596 ай бұрын
Thanks allot Bhaiya ,your videos awesome , I love your videos.
@varnitgupta7069 ай бұрын
amazing work
@sparshsharma60683 жыл бұрын
Understood! but, Bhaiya There is a more optimal version available in Leetcode discussion.
@takeUforward3 жыл бұрын
I don’t think so.. can you please paste it here.
@sparshsharma60683 жыл бұрын
@@takeUforward Here's the java code bhaiya private TreeNode constructTree(TreeNode root, int[] idx, int stop,int[] preorder, int[] inorder){ if(idx[0] >= preorder.length) return root; if(inorder[idx[1]] == stop){ idx[1]++; return root; } root = new TreeNode(preorder[idx[0]++]); root.left = constructTree(null, idx, root.val, preorder, inorder); root.right = constructTree(null, idx, stop, preorder,inorder); return root; } public TreeNode buildTree(int[] preorder, int[] inorder) { int[] idx = {0,0}; //{preorder_idx, inorder_idx} return constructTree(null, idx, Integer.MAX_VALUE, preorder, inorder); } Time O(n), Space O(n) (recursive) I kept on dry running it and it then seemed logical, but, I still don't know the intuition behind it. It will be very helpful, If can you make a LC post and explain the intuition behind this. link to discussion : leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/discuss/34543/Simple-O(n)-without-map Look in the comments, you will find C++ or java code.
@adithyaas77352 жыл бұрын
202/203 test case timelimit exceeded to fix this just put ''&map" on function arguments
@santanu292 жыл бұрын
Thank you. I was stuck there. Quickly can you mention why it gives tle for not using "&"
@adithyaas77352 жыл бұрын
@@santanu29'&' means we are passing the map as reference (only the address of it) In pass by reference, no new copy of the variable is made, so overhead of copying is saved
@MJBZG2 ай бұрын
understood striver, much love
@shivamchaudhary3646 Жыл бұрын
Very well explained... but at leetcode it will give memory limit exceed for a particular testcase make map globally !
@adrashsingh41097 ай бұрын
great explanation! Thank you
@GoluYadav-cg3kx2 жыл бұрын
Hi striver love from iit r. I just wanna clarify that if case the in order traversal have duplicate values then what should be our approach
@samarthvarshney512 Жыл бұрын
just use a unordered_map> mp
@26_jamkhandedattatray592 жыл бұрын
doing dry run is little bit difficult pr when i understood 😌 toh bas mazza agaya😀. Thnx bro for such great video 😊
@iamnottech89184 ай бұрын
What an explanation !!
@Lalit_Shirsath3 жыл бұрын
can we use unordered map to save time complexity ? map --> O( log n ) unordered_map --> O(1)
@takeUforward3 жыл бұрын
Unordered map’s worst case is still o(n) 😉
@Lalit_Shirsath3 жыл бұрын
@@takeUforward ha bhaiya 😁🤗
@shivammishrasvnit54562 жыл бұрын
@@takeUforward bhyaa still in leetcode tle coming what to do😞😞 ?
@shivammishrasvnit54562 жыл бұрын
no i got accepted after putting map by reference, thanks for it you explained soo well!
@hiddenguy71742 жыл бұрын
@@shivammishrasvnit5456 try passing map by reference
@sanjai_rs7 Жыл бұрын
Brilliant idea!
@dsa.aditya Жыл бұрын
IN GFG THE CODE MIGHT GET SEGMENTATION FAULT SO PLEASE USE QUEUE DATA STRUCTURE TO STORE THE MULTIPLE INDEX OF A SAME ELEMENT. REALLY Thank You so much Striver Bhaiya🙏 HERE IS THE CODE ------ Node* ans(int pre[],int preStart,int preEnd,int in[],int inStart,int inEnd,unordered_map& mp) { if (preStart > preEnd || inStart > inEnd) { return NULL; } Node* root=new Node(pre[preStart]); int inroot=mp[root->data].front(); mp[root->data].pop(); int left=inroot-inStart; root->left=ans(pre,preStart+1,preStart+left,in,inStart,inroot-1,mp); root->right=ans(pre,preStart+left+1,preEnd,in,inroot+1,inEnd,mp); return root; } Node* buildTree(int in[], int pre[], int n) { unordered_map mp; for (int i = 0; i < n; i++) { mp[in[i]].push(i); } Node* root=ans(pre,0,n-1,in,0,n-1,mp); return root; }
@relaxingnaturalvibrations1171 Жыл бұрын
thanks bro
@gandhijainamgunvantkumar67832 жыл бұрын
Thank you so much for explaining very beautifully
@harshadatrimukhe9147 Жыл бұрын
TLE for last test case(Leetcode)
@AashimaKatoch Жыл бұрын
@Sidak Chuchra it helped thankyou
@CharitraAgarwal4 ай бұрын
TreeNode *getNode(vector&pre, vector& ino, int s, int e, int &i) { if(s > e) return NULL; // no more elements in inorder range int el = pre[i++]; // get current element in preorder TreeNode *node = new TreeNode(el); // create a node if(s == e) return node; // if its the only node in inorder range // search for this node in the inorder arrangement int ind = s; while(ino[ind] != el) ind++; // if there are some elements in the left of the inorder index, // this means, we have some elements in the left subtree if(ind > s) node->left = getNode(pre, ino, s, ind-1, i); // remaining elements are in right subtree node->right = getNode(pre, ino, ind+1, e, i); return node; // return this node } TreeNode* buildTree(vector& preorder, vector& inorder) { int i = 0; // index for preorder array // taking preorder index as reference, as it gets updated as soon as // elements gets used return getNode(preorder, inorder, 0, inorder.size()-1, i); }
@andrewcenteno3462 Жыл бұрын
Phenomenal explanation
@arnedits63355 ай бұрын
grest explanantion.
@siddharthmagadum162 жыл бұрын
Your explanation is OP.
@vishalgowrav2 жыл бұрын
What an explanation!!🥺❤ Take a bow striver🙇♂️
@viditaagrawal4169 Жыл бұрын
Nice explanation !! For duplicate values instead of using map we can create individual function findIndex from inorder array using visited array , which won't repeat index , my code passed on gfg
@nikhilsachan_cse7144 Жыл бұрын
In question, it is written that no duplicate values are allowed, otherwise it will be impossible to create tree from traversals in some cases.
@fine2981 Жыл бұрын
can u pls share ur code.??
@viditaagrawal4169 Жыл бұрын
@@fine2981 int findIndex(int in[],int ele,int n,vector &vis){ for(int i=0;ipreEnd || inStart>inEnd) return NULL; Node* root = new Node(pre[preStart]); int index = findIndex(in,root->data,n,vis); int inleftEnd = index-1; int preleftEnd = preStart+index-inStart; root->left = solve(in,pre,inStart,inleftEnd,preStart+1,preleftEnd,vis,n); int inrightSt = index+1; int prerightSt = preleftEnd+1; root->right = solve(in,pre,inrightSt,inEnd,prerightSt,preEnd,vis,n); return root; } public: Node* buildTree(int in[],int pre[], int n) { vector vis(n,0); return solve(in,pre,0,n-1,0,n-1,vis,n); }
@viditaagrawal4169 Жыл бұрын
@@nikhilsachan_cse7144 Its on leetcode that duplicate isn't there but on gfg its mentioned in question that duplicates are also present
@fine2981 Жыл бұрын
/*Complete the code here. Node is as follows: struct Node { int data; Node* left; Node* right; }; */ class Solution{ public: Node* tree(int in[],int pre[], int &preindex,int ins,int ine,int n){ if(ins>ine || preindex>=n){ return NULL; } int element=pre[preindex++]; Node* root=new Node(element); int inorderindex=0; for(int i=0;idata==in[i]){ inorderindex=i; break; } } root->left=tree(in,pre,preindex,ins,inorderindex-1,n); root->right=tree(in,pre,preindex,inorderindex+1,ine,n); return root; } Node* buildTree(int in[],int pre[],int n) { int preindex=0; Node* ans=tree(in,pre,preindex,0,n-1,n); return ans; } }; can you tell me whats wrong with this code? its giving me wrong ans after 54 test cases.. this was the test case that it did not passed. 7 7 3 11 1 17 3 18 1 3 7 11 3 17 18
@bhargavijethva79588 ай бұрын
Amazing!👏👏
@aditya14-023 жыл бұрын
You explained well bro but while explaning code pls zoom it so that we don't have strain in eyes
@soubhikghosh6564 Жыл бұрын
Best solution ever!
@cinime2 жыл бұрын
Understood! So awesome explanation as always, thank you very much!!
@akashbhoyar74032 жыл бұрын
leetcode added some crazy test case......to which striver sir's code is showing TLE. If anyone knows abt -> How to deal with TLE....Please Comment !
@als_venky7057 Жыл бұрын
just send your map as a reference instead of sending it normally. And see the magic, boooom💥💥
@tushar730511 ай бұрын
We are using map so I think the time complexity should be O( NlogN ) ?
@Learnprogramming-q7f8 ай бұрын
Thank you Bhaiya
@yashgoyal99423 жыл бұрын
Getting TLE on GFG and leetcode after submitting the C++ code
@takeUforward3 жыл бұрын
Let me check this, they updated the test cases most probably.
@kshitijvarshney11333 жыл бұрын
@@takeUforward jst pass the map by reference
@VivekKumar-zo7kr3 жыл бұрын
@@kshitijvarshney1133 What does this passing by reference does? We are not changing anything in map.we are just accessing..so why passing by reference passed all cases?
@prantikofficial3 жыл бұрын
Just pass the map by reference.
@JohnWick-kh7ow3 жыл бұрын
Why solution with unordered_map is taking more runtime than map?
@UECAshutoshKumar Жыл бұрын
Thank you sir
@prayagdesai48842 жыл бұрын
Very clear and concise explaination..
@NMCSMROHANHEGDE3 жыл бұрын
last TC in LC will work ,if you pass map by reference
@takeUforward3 жыл бұрын
Done.
@madhavaprashath14533 жыл бұрын
Reason??
@yashjain14923 жыл бұрын
but why?
@takeUforward3 жыл бұрын
Since it creates a copy everytime, which tends to take more time. As a new copy gets created every time..
@yashjain14923 жыл бұрын
@@takeUforward thanks
@tankuharshida28552 жыл бұрын
I wrote the same code in python it's showing max recursion depth exceeded
@piyushacharya76962 жыл бұрын
I guess you made a mistake while passing the parameter in the function, hence the base case is not executing.
@usmanganimakandar9293 Жыл бұрын
map mp giving runtime error; we need to take maps mp; ig
@watchlistsclips31963 жыл бұрын
Why did u use map instead of unordered_map??
@prernagupta7729 Жыл бұрын
You are doing a great job bro...thanks a lot.
@003_sambit5 Жыл бұрын
Thanks a lot Striver for providing such amazing content to us for free of cost...respect for your Hard Work. Just one doubt , not sure if leetcode has updated its tcs coz now this algo is giving TLE at 202nd tc out of 203 tcs...
@013_aman Жыл бұрын
Take map as by reference it will work
@SahilSharma-to8nd Жыл бұрын
@@013_aman thanks
@Shivi325904 ай бұрын
thank you
@bhaveshkumar68422 жыл бұрын
Thank you, Striver!!!
@divakar43392 жыл бұрын
Loved the concept. Thank You striver
@isheep9025 Жыл бұрын
self note:t inleft=no of elements left on the left of root index. inroot=index of root in inorder inlefr- used for indexing pre/post; inroot-used for indexing inorder
@prathamchoudhary2 жыл бұрын
best explanation ever
@achalsayee25346 ай бұрын
note :In case of duplicates map won't work.because it overwrites old index with latest index. so do linear search within the bounds in inStart and inEnd.
@vvsish88032 жыл бұрын
Python Solution class Solution: def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]: inMap={} for i in range(len(inorder)): inMap[inorder[i]]=i return self.helper(preorder,0,len(preorder)-1,inorder,0,len(inorder)-1,inMap) def helper(self,preorder,preStart,preEnd,inorder,inStart,inEnd,inMap): if preStart>preEnd: return None elif preStart==preEnd: return TreeNode(preorder[preStart]) else: rootVal=preorder[preStart] inRoot=inMap[rootVal] numsLeft=inRoot-inStart root=TreeNode(rootVal) root.left=self.helper(preorder,preStart+1,preStart+numsLeft,inorder,inStart,inRoot-1,inMap) root.right=self.helper(preorder,preStart+numsLeft+1,preEnd,inorder,inRoot+1,inEnd,inMap) return root
@priyankasetiya13584 ай бұрын
class Solution { private TreeNode buildTreeHelper(int[] preorder,int[] inorder,int prestart,int preend,int instart,int inend, Map map){ if(prestart>preend || instart>inend){ return null; } TreeNode root= new TreeNode(preorder[prestart]); int inRoot = map.get(root.val); int numsleft = inRoot-instart; root.left= buildTreeHelper(preorder,inorder,prestart+1,prestart+numsleft,instart,inRoot-1,map); root.right=buildTreeHelper(preorder,inorder,prestart+numsleft+1,preend,inRoot+1,inend,map); return root; } public TreeNode buildTree(int[] preorder, int[] inorder) { Map map = new HashMap(); for(int i=0;i
@digvijay1228 Жыл бұрын
Correct me if I'm wrong but doesn't it only work with a Complete Binary Tree. I'm mean the resultant is a CBT.
@mohanseditz Жыл бұрын
Good Explanation of code!
@kuldeepmishra47182 жыл бұрын
Maza aa gaya bhai. Aaise hi padhate raho
@jayeshbhanushali17453 жыл бұрын
Please please please make DP series !!!
@KartikeyTT6 ай бұрын
tysm sir
@dharanit39183 жыл бұрын
Excellent explanation bro❤❤
@DeadPoolx17128 күн бұрын
UNDERSTOOD;
@anonymous090 Жыл бұрын
Thank you Bhaiya❤
@gouravkumarshaw54672 жыл бұрын
great explanation thanks!!
@neelpatel1223 жыл бұрын
Brilliant Explanation
@avanishmaurya203410 ай бұрын
Nice
@supratimbhattacharjee53242 жыл бұрын
class Solution { public: TreeNode* create(vector& preorder, vector& inorder, unordered_map& hash,int ps,int pe,int is,int ie) { if(ps>pe || is>ie) return nullptr; int rootIndxInInorder=hash[preorder[ps]]; int lps=ps+1; int lpe=ps+rootIndxInInorder-is; int rps=lpe+1; int rpe=pe; int lis=is; int lie=rootIndxInInorder-1; int ris=rootIndxInInorder+1; int rie=ie; TreeNode* root=new TreeNode(preorder[ps]); TreeNode* left=create(preorder,inorder,hash,lps,lpe,lis,lie); TreeNode* right=create(preorder,inorder,hash,rps,rpe,ris,rie); root->left=left; root->right=right; return root; } TreeNode* buildTree(vector& preorder, vector& inorder) { int n=preorder.size(); unordered_map hash; for(int i=0;i