Binary Tree Postorder Traversal
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> list=new ArrayList();
if(root==null) return list;
LinkedList<TreeNode> stack=new LinkedList();
stack.push(root);
while(!stack.isEmpty()){
root=stack.pop();
list.add(0,root.val);
if(root.left!=null) stack.push(root.left);
if(root.right!=null) stack.push(root.right);
}
return list;
}
}
Binary Tree Inorder Traversal
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> inTraversal=new ArrayList<>();
Stack<TreeNode> nodes=new Stack<>();
TreeNode cur=root;
while(cur!=null||!nodes.isEmpty()){
while(cur!=null){
nodes.push(cur);
cur=cur.left;
}
cur=nodes.pop();
inTraversal.add(cur.val);
cur=cur.right;
}
return inTraversal;
}
}
Binary Tree Preorder Traversal
public class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> preorder=new ArrayList();
LinkedList<TreeNode> stack=new LinkedList();
TreeNode node;
stack.push(root);
while(!stack.isEmpty()){
node=stack.pop();
if(node!=null){
preorder.add(node.val);
stack.push(node.right);
stack.push(node.left);
}
}
return preorder;
}
}