Iterative & Recursive - Binary Tree Inorder Traversal - Leetcode 94 - Python
Vložit
- čas přidán 25. 07. 2024
- 🚀 neetcode.io/ - A better way to prepare for Coding Interviews
🥷 Discord: / discord
🐦 Twitter: / neetcode1
🐮 Support the channel: / neetcode
⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
💡 DYNAMIC PROGRAMMING PLAYLIST: • House Robber - Leetco...
Problem Link: leetcode.com/problems/binary-...
0:00 - Read the problem
0:49 - Recursive Explanation
2:43 - Recursive Coding
4:40 - Iterative Explanation
11:48 - Iterative Coding
leetcode 94
This question was identified as an apple coding interview question from here: github.com/xizhengszhang/Leet...
#apple #interview #python
Disclosure: Some of the links above may be affiliate links, from which I may earn a small commission. - Věda a technologie
Thank you father
Thanks for explaining so well! It was so clear that I understood in one go.
I was searching for this explanation few hours back and here it is. You are doing a great job and I mean literally "great job".
Also I was worried that since you got job now video would not be that frequent, Please prove us wrong.
I am as noobish as they come and I first check for any neetcode vids for a problem I encounter in LC. Ur goated fr
You have literally every single question explained, jesus. Thank you man I love you!
I think the core idea to grasp the iterative solution is to understand the recursive solution first,
Basically, when you do the dfs(node->left), it just keeps finding its leftmost node until it doesn't, then you'll have to pop the stack to 'visit' the node(in-order), then dfs(node->right), it's the time for its right node.
Hope it helps.
I can't thank you enough for your videos !!!
Thanks so much! This helped a bunch!
this channel has helped me so much, thank you!
Thanks, very helpful 👍
You are a great teacher!
great explanation thanks!
This is fantastic, thank you.
Thank you for the video. I am grateful for your time and contribution. Kind regards, Akira.
Thanks!
best video brother! love this!
Only moment that i realized the importance of the tree structure with a stack is preparing jobs interview ...
You should add the call stack explanation to the recursion section in your DS & Algos course. This was insanely helpful to understand recursion and draw a connection to stacks. Thank you.
Why I need to define private function “inorder”? Why I cannot directly recur self.inordertraversal(root.left) and self.inorderyraversal(root.right)?
Glad to see i'm not the only one that always mistakenly append the node to res lol. Could you share what you use to write/draw? ipad? tablet? touch screen?
Awesome Thanks!
thank you after your explanation i can do it on my own, the description was afwul
Thank You!
You should add the call stack explanation to your recursion section from the DS & Algos course. This was insanely helpful to understand recursion.
dude best explanation
Hope to have your video of 145. Binary Tree Postorder Traversal
heyyy brooo thanks alot❤
Bro I love u thanks man
Do you have basic cs leetcode Playlist? Thanks
Thank you.
Totally off-topic but how you got so good at drawing instructions? Lately I've been giving tutoring and I took inspiration from you (yet again) and used paint 3d for online sessions, the thing is that I always take too long to write/draw stuff that doesn't even looks that good. So, is it just practice or you have a distinct device other than a mouse?
@NeetCode I have this exact question. Please help if you are able to get to answering
He has responded to this before in another video. He uses Paint 3D and mouse. I guess its just practice. You can alternatively use Drawing pad
@@rikpatel He uses a mouse??? That's crazy. He writes like he uses a stylus.
just use a stylus
@@St0n3dCold lmao yeah why I didn't thought that? Let me also convert my display into a touchscreen. Better yet, let me get an expensive graphic tablet for something that isn't my profession, that way I could use an stylus, or several, to enhance the tutoring experience
Do we need to know about iterative method if we know recursive one
I guess instead of inner while Ioop, we could simply use if condition , am I right ?
def inorder(root):
curr, stack = root, []
res = []
while curr or stack:
if curr:
stack.append(curr)
curr = curr.left
else:
curr = stack.pop()
res.append(curr)
curr = curr.right
return res
can you please explain Morris Traversal algorithm, please.
Nice
Please do shortest path visiting all nodes on leetcode. It's a hard problem.
May I know why only stack is considered hare ??
easy :) easy to remember...
Any vlogs coming?
can somebody help me out here:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
result = []
stack = []
cur = root
while cur or stack:
while cur:
stack.append(cur)
Because a node is a object of class TreeNode. Makes sense to store in stack cause it stores other things like functions and stuff. But we need to store values in array
Yer a wizard, Harry
why are we appending the node to stack instead of just appending the values.
I don't think the link you put in the description is the right one :p nice video btw
True leads to 108 instead of 94
fixed!
Did you know, you can do iterative in / pre / post order traversals using same code??
Checkout how I did it in just 20 lines, in my new video
czcams.com/video/6wxNc8gCj8E/video.html
Is it Okay if u are solving this problem for the first time and ended up looking at the solution like this?
I feel guilty seeing the solution that i will be looking for solution every time i encounter problems that i can't solve.
Any advice?
I'm currently in the same shoes as u right now.. but based on my research I think it's okay.. don't feel guilty
Where are you at in your programming/comp science journey? @@erinwolf1563 @kaikim8402
zhin
b
zhina
This iterative solution is pretty unintuitive.
yea i solved this problem iteratively with a hint of stack usage and it took me almost 5 hours.... my self-esteem is low now lol
Where are you at in your programming/comp science journey tho? @@user-lz5mb5nj2r
The iterative code is hard for me to wrap my head around, but I'll keep revisiting it. For anyone in the same boat, I found this code on GeeksforGeeks and it helped me to understand it even more:
cur = root
stack = []
res = []
while True:
if cur:
stack.append(cur)
cur = cur.left
elif stack:
cur = stack.pop()
res.append(cur.val)
cur = cur.right
else:
return res
Thanks man, that was really helpful 🌷
@@Baraa_Sy_99 Glad it helped you!