Розмір відео: 1280 X 720853 X 480640 X 360
Показувати елементи керування програвачем
Автоматичне відтворення
Автоповтор
Ayo the thumbnail😂
Yes, The leaf node check should be done post order (not pre order) -- so that it will reach till parent
honestly I doubt we will ever have chance to implement tree traversal with iterative approach...thanks for the explanation
Thank you so much for the daily problems.
Thank You 🍃
Thank you!
Dunno why is it medium. Pretty straightforward solution.
look at the iterative.
@@chrischika7026 uglier and complicated, more memory footprint and not really outperforms recursive one. Would work on the languages which has no recursion, but they aren't on the language list in leetcode anyway, so why bother?
Is there any reason why would we use bfs in this case?
We can use dfs also no problem.
But if you wanna use bfs u need parent pointers that will be complicated.
U have to make a while look and keep on deleting the parents while target!=root.val. so this makes O(n2)
Accepted Java Iterative Solution using map and stack: class Solution { public TreeNode removeLeafNodes(TreeNode root, int target) { Map parentMap = new HashMap(); Stack stk = new Stack(); stk.push(root); while (!stk.isEmpty()) { TreeNode node = stk.pop(); if (node.right == null && node.left == null && node.val == target) { // delete this node TreeNode parent = parentMap.get(node); if (parent != null && parent.right == node) { // update parent right pointer to null parentMap.remove(node); parent.right = null; } if (parent != null && parent.left == node) { // update parent left pointer to null parentMap.remove(node); parent.left = null; } } else { boolean added = false; if (node.right != null && !parentMap.containsKey(node.right)) { added = true; stk.push(node); // add back current node to stack stk.push(node.right); parentMap.put(node.right, node); } if (node.left != null && !parentMap.containsKey(node.left)) { if (!added) { stk.push(node); // if not added ealier then add back } stk.push(node.left); parentMap.put(node.left, node); } } } //if root only is pending and having value == target if (root.left == null && root.right == null && root.val == target) { return null; } return root; }}
Sixty Nine!
Fourth
THIRD
420 everyday
fifth
FIRST!
SECOND!!
Ayo the thumbnail😂
Yes, The leaf node check should be done post order (not pre order) -- so that it will reach till parent
honestly I doubt we will ever have chance to implement tree traversal with iterative approach...
thanks for the explanation
Thank you so much for the daily problems.
Thank You 🍃
Thank you!
Dunno why is it medium. Pretty straightforward solution.
look at the iterative.
@@chrischika7026 uglier and complicated, more memory footprint and not really outperforms recursive one. Would work on the languages which has no recursion, but they aren't on the language list in leetcode anyway, so why bother?
Is there any reason why would we use bfs in this case?
We can use dfs also no problem.
But if you wanna use bfs u need parent pointers that will be complicated.
U have to make a while look and keep on deleting the parents while target!=root.val. so this makes O(n2)
Accepted Java Iterative Solution using map and stack:
class Solution {
public TreeNode removeLeafNodes(TreeNode root, int target) {
Map parentMap = new HashMap();
Stack stk = new Stack();
stk.push(root);
while (!stk.isEmpty()) {
TreeNode node = stk.pop();
if (node.right == null && node.left == null && node.val == target) { // delete this node
TreeNode parent = parentMap.get(node);
if (parent != null && parent.right == node) { // update parent right pointer to null
parentMap.remove(node);
parent.right = null;
}
if (parent != null && parent.left == node) { // update parent left pointer to null
parentMap.remove(node);
parent.left = null;
}
} else {
boolean added = false;
if (node.right != null && !parentMap.containsKey(node.right)) {
added = true;
stk.push(node); // add back current node to stack
stk.push(node.right);
parentMap.put(node.right, node);
}
if (node.left != null && !parentMap.containsKey(node.left)) {
if (!added) {
stk.push(node); // if not added ealier then add back
}
stk.push(node.left);
parentMap.put(node.left, node);
}
}
}
//if root only is pending and having value == target
if (root.left == null && root.right == null && root.val == target) {
return null;
}
return root;
}
}
Sixty Nine!
Fourth
THIRD
420 everyday
fifth
FIRST!
SECOND!!
420 everyday