非递归
public class Problem {
public List<Integer> postorderTraversal(TreeNode root){
List<Integer> list = new LinkedList<>();
if(root==null){
return list;
}
Stack<TreeNode> stack=new Stack<>();
Stack<TreeNode> output=new Stack<>();
TreeNode node =root;
while (node!=null||!stack.isEmpty()){
while (node!=null){
stack.push(node);
output.push(node);
node=node.right;
}
if(!stack.isEmpty()){
TreeNode temp = stack.pop();
node=temp.left;
}
}
while (!output.isEmpty()){
list.add(output.pop().val);
}
return list;
}
}
递归
public class Problem {
public List<Integer> postorderTraversal(TreeNode root){
List<Integer> list = new LinkedList<>();
if(root==null){
return list;
}
postorderTraversal(root,list);
return list;
}
public void postorderTraversal(TreeNode root,List<Integer> result){
if(root==null){
return;
}
postorderTraversal(root.left,result);
postorderTraversal(root.right,result);
result.add(root.val);
}
}