public ArrayList<Integer> postorderTraversal(TreeNode root){
Stack <TreeNode> stack = new Stack<>();
ArrayList<Integer> result = new ArrayList<>();
if(root== null){
return result;
}
TreeNode prev = null;
TreeNode curr ;
stack.push(root);
while(!stack.empty()){
curr = stack.peek();
if(prev == null || prev.left == curr || prev.right == curr){
if(curr.left != null){
stack.push(curr.left);
}else if(curr.right != null){
stack.push(curr.right);
}
}else if(curr.left == prev){
if(curr.right != null){
stack.push(curr.right);
}
}else{
result.add(curr.val);
stack.pop();
}
prev = curr;
}
return result;
}
}
二叉树的后序遍历
最新推荐文章于 2020-05-30 08:52:43 发布