Subtree of Another Tree (LeetCode 572) | Full solution with examples | Study Algorithms
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
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 ❤
you have to add string("^") to your initial string otherwise it breaks at special cases like
s = 12nullnull
t = 2nullnull
Cheeky Nikhil.
thanks bro
thank you! best explanation.
Thank you brother
Hey can you please explain how the "sb" object of String builder is preserve-ing the value when it moves to next iteration.
It won't take O(n). Java's .contains() works in O(MN). Use efficient pattern-matching algorithms like KMP to achieve linear TC.
Great.Thanks
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
you have to add string("^") to your initial string otherwise it breaks at special cases like
s = 12nullnull
t = 2nullnull
OP solution.
🧡 from remote.
very nice explanation.
Keep watching
Only pre-Order traversal will work here, In other 2 (POT & IOT) all TCs will not pass
Time complexity shouldn't be O(n) ...since String.contains() takes O(m+n)
O(m + n) will translate to O(n), where n > m
O(m+n) is still O(n) since m O(2n) which is worst case when n=m, which is still O(n)
Repeated DNA Sequences. make vedio about this
Nice
love ur explanion v much,, +1 suscription from my side buddy!!
Why we took ^ in StringBuilder
it is just an anchor
Solve "node at distance k from target node" Please🙏
i applied the same way in inorder and postorder after that it doesn't pass all the test cases in leetcode.
same here do you know the reason ?
@@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.
didnt work for all testcases
Check the code in description. It passes on leetcode
this is failing in this test case sir
Input
root =[12]
subRoot =[2]
What output are you expecting?
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
it passes the constraints on leetcode. can you explain your test case a little better?
I need to check will let you know
test cases failing
check the code in the github link provided in video description.
will fail only one test case. Anyways this method is not recommended, good explanation tho.