L38. Flatten a Binary Tree to Linked List | 3 Approaches | C++ | Java

Entire DSA Course: takeuforward.org/strivers-a2z...
Check our Website:
Linkedin/Instagram/Telegram: linktr.ee/takeUforward
#treeSeries #striver #placements

Пікірлер: 233

  • @Jai_Jai_shri_Ram108
    @Jai_Jai_shri_Ram1082 жыл бұрын

    in 3rd approach please add this line curr->left=NULL in the if block, after curr->right=curr->left; if you don't it give run time error:

  • @prathamsharma4416

    @prathamsharma4416

    Жыл бұрын

    thanks mate

  • @kingmaker9082

    @kingmaker9082

    Жыл бұрын

    Nice

  • @AjayThakur-lo3cl

    @AjayThakur-lo3cl

    Жыл бұрын

    Thanks buddy :)

  • @U2011-n7w

    @U2011-n7w

    Жыл бұрын

    thanks bro

  • @keshavbiyani9202

    @keshavbiyani9202

    2 ай бұрын

    Yes, was just gonna point that out. Thanks man.

  • @vedantsharma5876
    @vedantsharma58762 жыл бұрын

    This series is not best just because of the quality content, but also the way Striver has organized this playlist. The previous video was Morris Traversal, and this is the application of the Morris Traversal. You definitely are a gem Striver ❤

  • @naveen9646

    @naveen9646

    Жыл бұрын

    same for time to burn the tree prob which requires prerequiste of count nodes at distance k prob

  • @saimanaspathapadu1299

    @saimanaspathapadu1299

    8 ай бұрын

    Arey but iss me ,when previous becomes 7, how did node changed to 6 again

  • @priyanshkumar_iitd

    @priyanshkumar_iitd

    5 ай бұрын

    Yes, when I watched the burn binary tree problem & saw the way it was solved using the previous problem, my concepts became stronger.@@naveen9646

  • @rushidesai2836

    @rushidesai2836

    Ай бұрын

    @@saimanaspathapadu1299 6 ka right and left recursive call complete hua, uske baad 6 ka right set kiya as 7(prev), and 6 ka left as null. Finally, prev(last visited node) is set as 6(which is current node).

  • @RishiMishra1997
    @RishiMishra19972 жыл бұрын

    Your video lectures are very good and I am really thankful that you are providing us the free content. I think you forgot in the last pseudocode(approach 3) cur->left=NULL and due to that some of the viewers may have the confusion that's why I am writing this comment. Node *cur=root, *prev=NULL; while(cur!=NULL){ if(cur->left!=NULL){ prev=cur->left; while(prev->right){ prev=prev->right; } prev->right=cur->right; cur->right=cur->left; cur->left=NULL; //this line } cur=cur->right; } And thanks again for such quality content. Edit :- Some of the viewers has already wrote this in the comment and code which you gave is also correct.

  • @jaditi930
    @jaditi9302 жыл бұрын

    This is what passion speaks like.Gets straight to the heart.I was finding hard to understand this concept.Thankyou so much Finally found someone to get the intuition behind algos.This is the first video of yours and subscribed right away.Just keep going.

  • @deepaksarvepalli2344
    @deepaksarvepalli23442 жыл бұрын

    How it is possible for you man! You always come up with such blowing solutions.

  • @vrushabh_kulye7060

    @vrushabh_kulye7060

    2 жыл бұрын

    This solutions are already available on internet... btw great explanations....

  • @ashwinurewar5006

    @ashwinurewar5006

    2 жыл бұрын

    Gfg pe avlble hai with same eg

  • @sastashroud7646

    @sastashroud7646

    2 жыл бұрын

    Isn't this available on internet ?

  • @chandantaneja6388

    @chandantaneja6388

    2 жыл бұрын

    @@vrushabh_kulye7060 yeah but nothing can beat his explanation skills.

  • @mugambo5505

    @mugambo5505

    2 жыл бұрын

    solution har jagah hai internet par magar solution samjhana mei striver bhai ka koi takkar nhi hai except Harry bhai. fan of both ❤❤❤❤❤❤❤

  • @samridhshubham8109
    @samridhshubham81095 ай бұрын

    I've referred to so many channels over my lifetime, ngl...this guy is just GOAT.

  • @pranjalbansal8459
    @pranjalbansal84592 жыл бұрын

    In morris traversal code there is a small correction I think There should be curr->left = NULL; After, curr->right = curr->left;

  • @krishnarajs929

    @krishnarajs929

    2 жыл бұрын

    yesss

  • @k_harivardhan_4096

    @k_harivardhan_4096

    2 жыл бұрын

    yes @pranjal bansal In java it will look like this curr.left=null;

  • @parthadhikari8675

    @parthadhikari8675

    Жыл бұрын

    Right

  • @satakshipal5008
    @satakshipal50082 жыл бұрын

    You have arranged this playlist series in best order. It is really very helpful.

  • @sparshsharma6068
    @sparshsharma60682 жыл бұрын

    Amazing explanation bhaiya! Just one doubt, I think while recording, you forgot to set the left pointers of nodes to null in morris traversal. Edit: The code links in the description are 100% working and correct.

  • @rishabhkumar8115
    @rishabhkumar81152 жыл бұрын

    all 3 approaches are owsome!!!! and the 3rd one using linked list blows up...superbbbbbbbbbbb

  • @sameekshamurdia5-yeariddph649
    @sameekshamurdia5-yeariddph649 Жыл бұрын

    Congrats guys for completing Binary Trees, ab BST start krte h 🥳🥳 Thank you so much striver bhaiya for the amazing series💖

  • @teqarine5752

    @teqarine5752

    Жыл бұрын

    oof

  • @arshmehta50

    @arshmehta50

    Жыл бұрын

    Which yr

  • @aastikofficial6100

    @aastikofficial6100

    3 ай бұрын

    yeah kudos to you also lest keep growing with bst, graphs and dp

  • @alesblaze4745
    @alesblaze47452 жыл бұрын

    bro after watching your previous videos from this tree series and til 2:16 only i watched this video, i was able to come up with an approach and solved it iteratively. thanks a lot. Code : class Solution { public void flatten(TreeNode root) { TreeNode temp = root; if(temp == null) return; Deque stack = new LinkedList(); while(temp != null || !stack.isEmpty()) { TreeNode prev = null; while(temp != null) { if(temp.right != null) { stack.push(temp.right); } temp.right = temp.left; temp.left = null; prev = temp; temp = temp.right; } if(!stack.isEmpty()) { TreeNode nextRight = stack.pop(); prev.right = nextRight; temp = nextRight; } } } }

  • @Dontpushyour_luck
    @Dontpushyour_luck9 ай бұрын

    did it with morris traversal even before watching the video. you taught us so good!

  • @ANANDKUMAR-jk9yp
    @ANANDKUMAR-jk9yp2 жыл бұрын

    Striver Bhaiya, the same question was asked in my DE Shaw Interview. Unfortunately, couldn't answer that. Kaash , pahle dekh liya hota aapka yeh video. Anyways, thank you for your amazing explanation.

  • @AdityaMehta1307
    @AdityaMehta13072 ай бұрын

    Excellent Explanation, Thank you Striver

  • @shivangisrivastava1158
    @shivangisrivastava11582 жыл бұрын

    literally never thought we could do this question so easily!! i am blown! that too with 3 simple approaches!

  • @pulkitchausali1354
    @pulkitchausali1354 Жыл бұрын

    One of the best explanation from striver In Approach 3 after if block ends add one line cur.left = null; otherwise output will be wrong as left pointer is pointing to its original left child

  • @khalidalam980

    @khalidalam980

    4 ай бұрын

    Thanks bhai

  • @stith_pragya
    @stith_pragya3 ай бұрын

    Understood.........Thank You So Much for this wonderful video.............🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @rishabhkumar8115
    @rishabhkumar81152 жыл бұрын

    all 3 approaches are owsome!!!! and the 3rd one using linked list blows up...superbbbbbbbbbbb all 3 approaches are owsome!!!! and the 3rd one using linked list blows up...superbbbbbbbbbbb

  • @amitupadhyay2445
    @amitupadhyay24452 жыл бұрын

    in the third approch there should be the curr.left=null after the curr.right=curr.left

  • @daman666100

    @daman666100

    2 жыл бұрын

    yes, good catch!

  • @chaitanyakrishna9398
    @chaitanyakrishna93982 жыл бұрын

    What a great explanation bro listening to your explanation reduces my repetitive writing task to remember effectively.

  • @ajayagrawal2067
    @ajayagrawal20675 ай бұрын

    the 2nd solution is perfect for interview and very intuitive.

  • @rahulsrivastava1040
    @rahulsrivastava10402 жыл бұрын

    Mind Blowing Explanation ...hats off :)

  • @codingp110
    @codingp110Ай бұрын

    Awesome!

  • @spandanrastogi7144
    @spandanrastogi7144 Жыл бұрын

    Stack Solution can also be implemented with a Queue. Just push Left and then Right instead of Right and then Left.

  • @shreyasingh7833
    @shreyasingh78332 жыл бұрын

    Thank you so much sir for such a clear and detailed explanation !

  • @ketonesgaming1121
    @ketonesgaming11212 ай бұрын

    What a gem !!

  • @shivangisrivastava1158
    @shivangisrivastava11582 жыл бұрын

    Salute to your efforts for making such a wonderful series.

  • @paragroy5359
    @paragroy53592 жыл бұрын

    Nice explanation your videos are really good...please keep on making such videos...you are doing a great job.

  • @LalX77
    @LalX77 Жыл бұрын

    Thank You Striver so much, after watching all the previous binary trees videos, i could do this question without watching the solution!!

  • @deanwinchester8691
    @deanwinchester86912 жыл бұрын

    cur->left should be set to NULL or else it won't change and will be not accepted as in the question it is told that the nodes in flatten BT must be set to NULL.

  • @Shivi32590
    @Shivi3259028 күн бұрын

    thank you

  • @doingsneakypeakylike
    @doingsneakypeakylike2 жыл бұрын

    What a solid explanation man! Thanks!

  • @aadityakhetan956
    @aadityakhetan9562 жыл бұрын

    Great explanation. Very nicely explained.

  • @user-tk2vg5jt3l
    @user-tk2vg5jt3l4 ай бұрын

    Thank you Bhaiya

  • @dheerajsharma5492
    @dheerajsharma54922 жыл бұрын

    I must say this is a well crafted question. THANKS

  • @pawanlok1776
    @pawanlok17762 жыл бұрын

    whenever I face a problem in solving a problem, first choice is TUF.. ]THANKS FOR MAKING THIS VIDEO.

  • @saicharan4669
    @saicharan46692 жыл бұрын

    The first approach is really amazing 👏👏👏

  • @ankitpalsingh8191
    @ankitpalsingh81919 ай бұрын

    awesome...

  • @anujrawat6304
    @anujrawat63042 жыл бұрын

    understood , great content, preparing for interview from it

  • @iamnottech8918
    @iamnottech891824 күн бұрын

    The main Intution for last approach is if we use normal Morris then we will loose right pointer and if we make it to root->right then a connection is made it will be not lost and also it is at its correct position

  • @eshandhok2591
    @eshandhok25912 жыл бұрын

    one more thing, cur->left = nullptr; before starting iteration over next cur because it might give some kind of error

  • @PrinceKumar-el7ob
    @PrinceKumar-el7ob2 жыл бұрын

    bow down ! recursion is really crazy and beautiful.

  • @pritishpattnaik4674
    @pritishpattnaik46742 жыл бұрын

    I loved the stack approach !

  • @dsa_tutorial
    @dsa_tutorial Жыл бұрын

    Keep uploading videos keep going Thank you for this amazing contents .

  • @adrishsaha407
    @adrishsaha4072 жыл бұрын

    Just Wow Striver Bhaiya.......Conceptual videos are the best,code excluded.

  • @avanishmaurya2034
    @avanishmaurya20346 ай бұрын

    Nice

  • @SuyashSoni248
    @SuyashSoni248 Жыл бұрын

    Can be done by IBH(Induction-Base-Hypthesis) - def flatten(self, root): if root is None: return self.flatten(root.left) self.flatten(root.right) rL, rR = root.left, root.right root.left = None root.right = rL # induction temp = root while temp and temp.right: temp = temp.right temp.right = rR

  • @himanshugupta7010
    @himanshugupta70102 жыл бұрын

    In the last approach after cur->right= cur->left ; then cur->left=NULL should be there.

  • @dsa_tutorial
    @dsa_tutorial Жыл бұрын

    Guys something missing in 3rd approach after writing prev->right = curr->right curr->right = curr->left curr->left = NULL please include this line in order to break previous connections .

  • @yashwagh83
    @yashwagh832 жыл бұрын

    That evil okayyy at 7:25 lol, funny!

  • @ashishverma1382
    @ashishverma13822 жыл бұрын

    understand this question very easily thanks

  • @WhisperingWalnuts
    @WhisperingWalnuts2 жыл бұрын

    Nice solution!! Thanks for making! Morris travesal solution starts at 15:42 !!!

  • @sauravdutta
    @sauravdutta Жыл бұрын

    Was able to code it myself after watching the previous morris traversal video :)

  • @imilanprj
    @imilanprj2 жыл бұрын

    Awesome explanation 🔥🔥🔥

  • @utkarshsharma6650
    @utkarshsharma66502 жыл бұрын

    understooooood well. thanks :)

  • @AngadSingh97
    @AngadSingh97 Жыл бұрын

    kya padhate ho bhai, thank you so much for the quality content!

  • @codding32world50
    @codding32world50 Жыл бұрын

    how beutiful the first approach...

  • @PiyushKumar-mn3uh
    @PiyushKumar-mn3uh Жыл бұрын

    Guys, There are something missing in 3rd approach. After this line curr->right = crr->left add curr->left = NULL to break the prev connections of left O.W you will get run time error.

  • @rajrajesh1669
    @rajrajesh166910 ай бұрын

    In the 3rd approach i think there is an issue, we are going as right as possible, but what if the right most node has a left child?

  • @playnskip
    @playnskip2 жыл бұрын

    Awesome explanation 🙏

  • @bharathkumar8807
    @bharathkumar88072 ай бұрын

    Niceeee

  • @sauravchandra10
    @sauravchandra10 Жыл бұрын

    Was able to complete the binary tree series in 5 days, looking to wrap up the BST questions in the next 2-3 days.

  • @Anonymous____________A721

    @Anonymous____________A721

    17 күн бұрын

    What are you doing now? Unemployed or student or employed

  • @sauravchandra10

    @sauravchandra10

    17 күн бұрын

    @@Anonymous____________A721 Employed

  • @Anonymous____________A721

    @Anonymous____________A721

    16 күн бұрын

    @@sauravchandra10 wow that's grear

  • @chiragbansod8252
    @chiragbansod82525 ай бұрын

    understood

  • @ANANDKUMAR-jk9yp
    @ANANDKUMAR-jk9yp2 жыл бұрын

    Sir, in the third approach (20:52), you are saying that you are finding the rightmost guy in the left subtree. But, initializing prev=cur->left and using the while loop may not always work. For ex: 1 / \ 2 4 / 3 In this case, if we are at the root then the last guy in the preorder traversal of left subtree according to your algorithm will be 2 , although it should be 3. Plz correct me, if i am wrong. Although, your algorithm works on even these cases well.

  • @anshumansharma4580

    @anshumansharma4580

    2 жыл бұрын

    Yes it should be 2. Therefore 2's right will point to 4(see the code again). We will set right child of node 1 to node 2. Now we will move cur from 1 to 2. Now at node 2, what is the "rightmost guy in left sub-tree"? It is node 3. Now we will set right child of node 3 to right child of cur ; i.e right child of node2 which is 4. That's how your question is answered. Cheers !! Ask if you have any doubt.

  • @ShivamKumar-hf5ec

    @ShivamKumar-hf5ec

    2 жыл бұрын

    if the left part of curr contains only one node itself so its left is null then the prev will automatically point to curr and will not point something else

  • @user-nh3ov6pr3j
    @user-nh3ov6pr3j Жыл бұрын

    Very Good Explanation bruh!

  • @ankitshukla8972
    @ankitshukla89722 ай бұрын

    In the last approac , using Morris traversal , you forgot to put curr.left= null . TreeNode curr=root; while(curr!=null){ if(curr.left != null){ TreeNode prev=curr.left; while(prev.right != null){ prev=prev.right; } prev.right=curr.right; curr.right=curr.left; curr.left=null; } curr=curr.right; }

  • @aniketmasram6500
    @aniketmasram65002 жыл бұрын

    Superb and thanks a lot bhaiya ❤️

  • @sujan_kumar_mitra
    @sujan_kumar_mitra2 жыл бұрын

    Understood! BTW, I have created a PR with Java code for this problem. Do give it a check!

  • @takeUforward

    @takeUforward

    2 жыл бұрын

    Merged, thanks.

  • @YeaOhYeahh
    @YeaOhYeahh7 ай бұрын

    🔥🔥

  • @nagavedareddy5891
    @nagavedareddy58912 жыл бұрын

    Huge Respect...❤👏

  • @alesblaze4745
    @alesblaze47452 жыл бұрын

    at 17:30 bro, you need to add cur->left = null as well.

  • @pulkitjain5159
    @pulkitjain5159 Жыл бұрын

    this reccursion will also work , normal preorder traversal, this will also take O(N) time Node * flattenMe(Node * root){ if(root == nullptr) return nullptr; Node * leftSubtreeLinkedList = flattenMe(root->left); Node * rightSubtreeLinkedList = flattenMe(root->right); root->left = nullptr; root->right = leftSubtreeLinkedList; Node * ptr = root; while(ptr->right!=nullptr){ ptr = ptr->right; } ptr->right = rightSubtreeLinkedList; return root; }

  • @yashgarg8906
    @yashgarg89062 жыл бұрын

    In the morris traversal approach, shouldn't we make the curr->left = NULL ? Because after doing curr->right = curr->left Curr is having same subtrees on both left and right so shouldn't we remove the left subtree?

  • @takeUforward

    @takeUforward

    2 жыл бұрын

    Do a dry run, you will see its done.

  • @krishnarajs929

    @krishnarajs929

    2 жыл бұрын

    Yes you need to change that curr->right = curr->left; then curr->left = NULL

  • @akhilesh59
    @akhilesh592 жыл бұрын

    Maza aaya! Understood ;)

  • @mayanksingh5783
    @mayanksingh5783 Жыл бұрын

    Mind blowing explaination

  • @kirubakaran1547
    @kirubakaran1547 Жыл бұрын

    In morris traversal method, u didn't make current's left pointer null

  • @umarqureshi8499
    @umarqureshi84992 жыл бұрын

    Amazing. Keep making videos. You are really teaching us a lot!!

  • @MaanyaSekhri1234
    @MaanyaSekhri12346 ай бұрын

    Can someone please tell that if we are prohibited to use auxiliary data structure then can we use recursion or not ???

  • @techxpertrishabh7011
    @techxpertrishabh7011 Жыл бұрын

    I like stack approach 🧡🧡

  • @sleepypanda7172
    @sleepypanda71722 жыл бұрын

    absolute genius!!

  • @namankeshari7332
    @namankeshari7332 Жыл бұрын

    Freaking loved this video!!!

  • @jayadubey_22
    @jayadubey_222 жыл бұрын

    one word only (woow!)🙌

  • @aryansinha1818
    @aryansinha18182 жыл бұрын

    What will happen if prev is inside the flatten function?

  • @bikideka7880
    @bikideka78802 жыл бұрын

    extremely perfect

  • @nayanikasinghachowdhury6747
    @nayanikasinghachowdhury6747Ай бұрын

    in first approach isnt it reverse preorder and not reverse postorder?

  • @m4rk509
    @m4rk5092 жыл бұрын

    In the first method how space complexity is O(N)...we've not made any extra ds...is this because of stack size due to function calls?

  • @shubham_v

    @shubham_v

    9 ай бұрын

    It's because each recursion call takes O(1) stack space internally. So for N number space complexity is O(N).

  • @AditiAgarwal-rw3lq
    @AditiAgarwal-rw3lq Жыл бұрын

    Striver you forgot to alter the left links for all nodes :)

  • @hometvfirestick
    @hometvfirestick2 жыл бұрын

    thanks

  • @ShubhamKumar-ex3nk
    @ShubhamKumar-ex3nk Жыл бұрын

    can't we use dummy node to create linked list?

  • @icongrindsetsfj
    @icongrindsetsfj Жыл бұрын

    Please teach us how to develop a thought process to come up with these kind of solutions.

  • @xd9050

    @xd9050

    Жыл бұрын

    practice

  • @hrushikesh-1914
    @hrushikesh-1914 Жыл бұрын

    Thankyou sir

  • @motabhaimotivation
    @motabhaimotivation Жыл бұрын

    I could get the last algo on my own and felt so satisfied seeing Striver told the same method.

  • @OmPrakash-kb2wq
    @OmPrakash-kb2wq Жыл бұрын

    best lectures on tree.

  • @freetechinfo2024
    @freetechinfo2024 Жыл бұрын

    Thanks good job

  • @user-df9fx2jk8x
    @user-df9fx2jk8x27 күн бұрын

    DONE :)

  • @raj_kundalia
    @raj_kundalia Жыл бұрын

    Thank you

  • @jatingarg1897
    @jatingarg18972 жыл бұрын

    Best Solution

  • @UECAshutoshKumar
    @UECAshutoshKumar11 ай бұрын

    Thank you sir

  • @adityasaxena6971
    @adityasaxena6971 Жыл бұрын

    Great Sir