描述
给定一个二叉树,返回它的后序遍历。
分析
后序遍历的顺序是左右中,先序遍历的顺序是中左右,先序遍历的迭代压入栈的顺序是中右左,稍加修改,压入栈的顺序变成中左右,再将遍历的结果反转即可得到后序遍历顺序。
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
if(root == null){
return res;
}
stack.push(root);
while(!stack.isEmpty()){
TreeNode node = stack.pop();
//每个元素从0位置插入会起到倒置的效果
res.add(0,node.val);
if(node.left != null){
stack.push(node.left);
}
if(node.right != null){
stack.push(node.right);
}
}
return res;
}
}