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.
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?
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?
@@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
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
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
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 ua-cam.com/video/6wxNc8gCj8E/v-deo.html
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
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?
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.
Thank you father
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.
Thanks!
Thanks for explaining so well! It was so clear that I understood in one go.
I love the way he explains Easy problems indetailed keping in mind of beginners 💖
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?
Why I need to define private function “inorder”? Why I cannot directly recur self.inordertraversal(root.left) and self.inorderyraversal(root.right)?
You should add the call stack explanation to your recursion section from the DS & Algos course. This was insanely helpful to understand recursion.
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
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
Only moment that i realized the importance of the tree structure with a stack is preparing jobs interview ...
this channel has helped me so much, thank you!
can you please explain Morris Traversal algorithm, please.
best video brother! love this!
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!
thank you after your explanation i can do it on my own, the description was afwul
great explanation thanks!
Thanks, very helpful 👍
Thanks so much! This helped a bunch!
heyyy brooo thanks alot❤
You are a great teacher!
I can't thank you enough for your videos !!!
Do you have basic cs leetcode Playlist? Thanks
dude best explanation
Thank you for the video. I am grateful for your time and contribution. Kind regards, Akira.
Hope to have your video of 145. Binary Tree Postorder Traversal
Recursive took like 2 minutes but for some odd reason the iterative solution was trickier than medium graph problems
Do we need to know about iterative method if we know recursive one
May I know why only stack is considered hare ??
This is fantastic, thank you.
Bro I love u thanks man
Thank you.
Please do shortest path visiting all nodes on leetcode. It's a hard problem.
Awesome Thanks!
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
ua-cam.com/video/6wxNc8gCj8E/v-deo.html
Any vlogs coming?
why are we appending the node to stack instead of just appending the values.
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
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
easy :) easy to remember...
Yer a wizard, Harry
I understood what is happening but its very hard for me to understand why thats happening
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!
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? @@СтасюкАндрій
Nice
zhina
zhin
b
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.
Thank You!