给出一棵二叉树,返回其节点值的后序遍历。
样例
给出一棵二叉树 {1,#,2,3},
1
\
2
/
3
返回 [3,2,1]
代码
import java.util.ArrayList;
import java.util.List;
import LintClass.TreeNode;
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class PostorderTraversal_68 {
/*
* @param root: A Tree
* @return: Postorder in ArrayList which contains node values.
*/
List<Integer> output = new ArrayList<Integer>();
public List<Integer> postorderTraversal(TreeNode root) {
// write your code here
TreeNode cur = root;
if(cur == null)
return output;
if(cur.left != null) {
postorderTraversal(cur.left);
//output.add(cur.left.val);
}
if(cur.right != null) {
postorderTraversal(cur.right);
//output.add(cur.right.val);
}
output.add(cur.val);
return output;
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
TreeNode left_1 = new TreeNode(4);
TreeNode left_2_right = new TreeNode(5);
TreeNode right_1 = new TreeNode(2);
TreeNode right_2_left = new TreeNode(3);
root.left = left_1;
root.left.right = left_2_right;
root.right = right_1;
root.right.left = right_2_left;
// left, right, root
PostorderTraversal_68 obj = new PostorderTraversal_68();
System.out.print(obj.postorderTraversal(root));;
}
}










网友评论