Subtree of Another Tree (LeetCode 572) | Full solution with examples | Study Algorithms

Sdílet
Vložit
  • čas přidán 26. 07. 2024
  • Actual Problem: leetcode.com/problems/subtree...
    Chapters:
    00:00 - Intro
    00:44 - Problem Statement and Description
    02:27 - Efficient Solution
    07:56 - Caveats and Gotchas
    11:09 - Dry-run of Code
    13:11 - Final Thoughts
    📚 Links to topics I talk about in the video:
    Pre-order Traversal: • Pre-order traversal of...
    Post-order Traversal: • Post-order traversal o...
    In-order Traversal: • In-order traversal of ...
    Level order Traversal: • Level order traversal ...
    📘 A text based explanation is available at: studyalgorithms.com
    Code on Github: github.com/nikoo28/java-solut...
    Test-cases on Github: github.com/nikoo28/java-solut...
    📖 Reference Books:
    Starting Learn to Code: amzn.to/36pU0JO
    Favorite book to understand algorithms: amzn.to/39w3YLS
    Favorite book for data structures: amzn.to/3oAVBTk
    Get started for interview preparation: amzn.to/39ysbkJ
    🔗 To see more videos like this, you can show your support on: www.buymeacoffee.com/studyalg...
    🎥 My Recording Gear:
    Recording Light: amzn.to/3pAqh8O
    Microphone: amzn.to/2MCX7qU
    Recording Camera: amzn.to/3alg9Ky
    Tablet to sketch and draw: amzn.to/3pM6Bi4
    Surface Pen: amzn.to/3pv6tTs
    Laptop to edit videos: amzn.to/2LYpMqn
    💻 Get Social 💻
    Follow on Facebook at: / studyalgos
    Follow on Twitter at: / studyalgorithms
    Follow on Tumblr at: / studyalgos
    Subscribe to RSS feeds: studyalgorithms.com/feed/
    Join fan mail: eepurl.com/g9Dadv
    #leetcode #programming #interview

Komentáře • 36

  • @unemployedcse3514
    @unemployedcse3514 Před 23 dny +1

    guys who ever is confused with '^' in Stringbuilder it is to handle below kind of tree node
    TreeNode root = new TreeNode(12);
    TreeNode subRoot = new TreeNode(2);
    where 12 (tweleve) will be treated as 1,2 subtree as 2 it gives true
    to figure out item or data in node we are using ^ as seperator
    still if u need confirmation pls refer test case created by nikhil in description code
    and nikhil small suggestion pls explain or stick to same logic during dry run , this will give more clarification and reduces doubts , in last example no null were included in ur explanation
    rest vedio is very helpful thank you ❤

  • @alisheheryar1770
    @alisheheryar1770 Před 4 měsíci +5

    you have to add string("^") to your initial string otherwise it breaks at special cases like
    s = 12nullnull
    t = 2nullnull
    Cheeky Nikhil.

  • @AlexTopGT
    @AlexTopGT Před 9 měsíci +1

    thank you! best explanation.

  • @shrirambalaji2915
    @shrirambalaji2915 Před rokem +2

    Thank you brother

  • @rahulsinghdeo7519
    @rahulsinghdeo7519 Před rokem +3

    Hey can you please explain how the "sb" object of String builder is preserve-ing the value when it moves to next iteration.

  • @syedomarali2678
    @syedomarali2678 Před 6 dny

    It won't take O(n). Java's .contains() works in O(MN). Use efficient pattern-matching algorithms like KMP to achieve linear TC.

  • @varundwivedi1079
    @varundwivedi1079 Před 8 měsíci

    Great.Thanks

  • @smridhjain4100
    @smridhjain4100 Před měsícem +1

    Whenever you put StringBuilder sb = new StringBuilder("^"); it passes the test cases but if you dont put the ^ it fails a single test case of root =[1,2] and subroot=[2] , can you explain why please? I think this is the same query that others trying to ask in the comment section

    • @nikoo28
      @nikoo28  Před měsícem

      you have to add string("^") to your initial string otherwise it breaks at special cases like
      s = 12nullnull
      t = 2nullnull

  • @killeraloo3247
    @killeraloo3247 Před 7 měsíci

    OP solution.
    🧡 from remote.

  • @codeLine7
    @codeLine7 Před 10 měsíci

    very nice explanation.

  • @pratyushtripathy1463
    @pratyushtripathy1463 Před 4 měsíci

    Only pre-Order traversal will work here, In other 2 (POT & IOT) all TCs will not pass

  • @minnikeswarrao6185
    @minnikeswarrao6185 Před rokem +2

    Time complexity shouldn't be O(n) ...since String.contains() takes O(m+n)

    • @nikoo2805
      @nikoo2805 Před rokem +1

      O(m + n) will translate to O(n), where n > m

    • @pranavm9301
      @pranavm9301 Před 5 měsíci

      O(m+n) is still O(n) since m O(2n) which is worst case when n=m, which is still O(n)

  • @yemeniabedontaclf
    @yemeniabedontaclf Před rokem +1

    Repeated DNA Sequences. make vedio about this

  • @shahriarbadhon4596
    @shahriarbadhon4596 Před 8 měsíci

    Nice

  • @amanpahari690
    @amanpahari690 Před 3 měsíci

    love ur explanion v much,, +1 suscription from my side buddy!!

  • @djpsn7094
    @djpsn7094 Před 11 měsíci +1

    Why we took ^ in StringBuilder

    • @nikoo28
      @nikoo28  Před 11 měsíci

      it is just an anchor

  • @user-bc6ss6gp3z
    @user-bc6ss6gp3z Před 4 měsíci

    Solve "node at distance k from target node" Please🙏

  • @sheikhmkrifat7749
    @sheikhmkrifat7749 Před 3 měsíci

    i applied the same way in inorder and postorder after that it doesn't pass all the test cases in leetcode.

    • @aryavardhansingh2162
      @aryavardhansingh2162 Před 3 měsíci

      same here do you know the reason ?

    • @sheikhmkrifat7749
      @sheikhmkrifat7749 Před 3 měsíci

      @@aryavardhansingh2162 yeah, i found that preOrder is used for comparing structure of BT, cause here root node comes first , then left and right on the other hand inorder and post dosent follow this, for that preOrder is used to compare two BT.

  • @blacklight8932
    @blacklight8932 Před rokem +1

    didnt work for all testcases

    • @nikoo28
      @nikoo28  Před rokem +1

      Check the code in description. It passes on leetcode

  • @garvitarora7777
    @garvitarora7777 Před 3 měsíci +1

    this is failing in this test case sir
    Input
    root =[12]
    subRoot =[2]

    • @nikoo28
      @nikoo28  Před 3 měsíci

      What output are you expecting?

  • @sumeersaifi6354
    @sumeersaifi6354 Před 6 měsíci +1

    you code is not fully correct if there is root 12 and subroot 2 then for 12 it will be 12nullnull and for will be 2nullnull and when you check root.contain(subroot) it will give true but it should be false

    • @nikoo28
      @nikoo28  Před 5 měsíci +1

      it passes the constraints on leetcode. can you explain your test case a little better?

    • @sumeersaifi6354
      @sumeersaifi6354 Před 5 měsíci

      I need to check will let you know

  • @BACSShaileshShettar
    @BACSShaileshShettar Před 4 měsíci

    test cases failing

    • @nikoo28
      @nikoo28  Před 4 měsíci

      check the code in the github link provided in video description.

  • @thor1626
    @thor1626 Před 4 měsíci

    will fail only one test case. Anyways this method is not recommended, good explanation tho.