class Solution {
public List postorderTraversal(TreeNode root) {
List<Integer> output = new ArrayList<Integer>();
traversePostOrder(root,output);
return output;
}
private TreeNode traversePostOrder(TreeNode root,List<Integer> output){
if(root==null)
return root;
//traverse left subtree first
root.left = traversePostOrder(root.left,output);
//traverse right subtree second
root.right = traversePostOrder(root.right,output);
//visit root node
output.add(root.val);//In post order the value is added after traversing left and right
return root;
}}