Tree traversal: Difference between revisions
Content added Content deleted
Line 10,328: | Line 10,328: | ||
let mut stack: Vec<&TreeNode<T>> = Vec::new(); |
let mut stack: Vec<&TreeNode<T>> = Vec::new(); |
||
let mut res: Vec<&TreeNode<T>> = Vec::new(); |
let mut res: Vec<&TreeNode<T>> = Vec::new(); |
||
let mut |
let mut opt = Some(self); |
||
while { |
while { |
||
// Descend leftwards |
// Descend leftwards |
||
while let Some(tree) = |
while let Some(tree) = opt { |
||
stack.push(tree); |
stack.push(tree); |
||
opt = tree.left.as_deref(); |
|||
} |
} |
||
!stack.is_empty() |
!stack.is_empty() |
||
Line 10,340: | Line 10,340: | ||
let tree = stack.pop().unwrap(); |
let tree = stack.pop().unwrap(); |
||
res.push(tree); |
res.push(tree); |
||
opt = tree.right.as_deref(); |
|||
} |
} |
||
res |
res |