small-lambda
Senior Member
C-like:
use std::rc::Rc;
use std::cell::RefCell;
type Node = Rc<RefCell<TreeNode>>;
impl Solution {
pub fn postorder_traversal(root: Option<Node>) -> Vec<i32> {
let mut stack = vec![];
let mut result = vec![];
let (left, right, done) = (0, 1, 2);
stack.push((root, left));
while let Some((node, state)) = stack.pop() {
match state {
0 => {
match node {
Some(node) => {
let left = node.borrow().left.clone();
stack.push((Some(node), 1));
stack.push((left, 0));
},
None => ()
}
},
1 => {
match node {
Some(node) => {
let right = node.borrow().right.clone();
stack.push((Some(node), 2));
stack.push((right, 0));
},
None => ()
}
},
2 => {
match node {
Some(node) => result.push(node.borrow().val),
None => ()
}
},
_ => ()
}
}
result
}
}

vô contest đi fence, luyện chay ko thi thố gì chán vl.