后序遍历二叉树
左右根
( 根右左的结果倒过来 就是左右根!!!!! )
1. 递归
class Solution { private List<Integer> res =new ArrayList<>(); public List<Integer> postorderTraversal(TreeNode root) { recur(root); return res; } void recur(TreeNode root){ if(root==null) return; recur(root.left); recur(root.right); res.add(root.val); } }
2. 迭代
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<TreeNode> stack =new ArrayList<>(); List<Integer> res = new ArrayList<>(); if(root!=null) stack.add(root); while(stack.size()>0){ root=stack.remove(stack.size()-1); res.add(root.val); if(root.left!=null) stack.add(root.left); if(root.right!=null) stack.add(root.right); } List<Integer> ls = new ArrayList<>(); while(res.size()>0){ ls.add(res.remove(res.size()-1)); } return ls; } }
也许会有遗憾,但是不应该在失败之前
浙公网安备 33010602011771号