题目:
二叉树后序遍历
思路:
头插法 插入顺序是根-》右-》左
栈先进后出,后序左-》右-》根,压入顺序是根-》右-》左
先遍历右子树,若右子树为空,执行pop返回上一级,遍历左子树
public List<Integer> postorderTraversal(TreeNode root) {
LinkedList<Integer> result = new LinkedList<>();
Stack<TreeNode> stack = new Stack<>();
while (root!=null||!stack.empty()){
if(root!=null){
stack.push(root);
result.addFirst(root.val);
root = root.right;
}else{
root= stack.pop();
root = root.left;
}
}
return result;
}
递归
public void postorder(TreeNode root, List<Integer> res) {
if (root == null) {
return;
}
postorder(root.left, res);
postorder(root.right, res);
res.add(root.val);
}