importjava.util.LinkedList;importjava.util.List;importjava.util.Scanner;classSolution {public List>levelOrder(TreeNode root) {
List> li = new LinkedList>();
List> result = new LinkedList>();if(root == null) {returnresult;}//li.add(0);
int deep = 0;
deep=finddeep(root,deep);
System.out.println("test:"+deep);
li=finddata(root,deep,li);
System.out.println(li);//List te = new LinkedList();
for (int j = deep; j >= 1; j--) {
List te = new LinkedList();for (int i = 0; i < li.size(); i++) {if(li.get(i).get(1) ==j) {
te.add(li.get(i).get(0));
}
}
result.add(te);//te.clear();
}returnresult;
}private List> finddata(TreeNode root, int deep, List>li) {//TODO Auto-generated method stub
List l = new LinkedList();if(root.left == null & root.right == null) {//deep = deep -1;
l.add(root.val);
l.add(deep);
deep= deep -1;
li.add(l);returnli;
}if(root.left != null & root.right == null) {//左树//到底了
l.add(root.val);
l.add(deep);
deep= deep -1;
li.add(l);
li=finddata(root.left,deep,li);returnli;
}if(root.left == null & root.right != null) {//左树//到底了
l.add(root.val);
l.add(deep);
deep= deep -1;
li.add(l);
li=finddata(root.right,deep,li);returnli;
}if(root.left != null & root.right != null) {//左树//到底了
l.add(root.val);
l.add(deep);
deep= deep -1;
li.add(l);
li=finddata(root.left,deep,li);
li=finddata(root.right,deep,li);returnli;
}return null;
}private int finddeep(TreeNode root, intdeep) {//TODO Auto-generated method stub
if(root.left == null & root.right == null) {//到底了
return 1;
}if(root.left != null & root.right == null) {//到底了
return finddeep(root.left,deep)+1;
}if(root.left == null & root.right != null) {//到底了
return finddeep(root.right,deep)+1;
}if(root.left != null & root.right != null) {//到底了
return finddeep(root.left,deep)+1>finddeep(root.right,deep)+1 ? finddeep(root.left,deep)+1:finddeep(root.right,deep)+1;
}return 0;//return finddeep(root.right,deep)+1;
}public static voidmain(String[] args) {//Scanner sc = new Scanner(System.in);
TreeNode root = new TreeNode(0);
TreeNode r1= new TreeNode(1);
TreeNode r2= new TreeNode(2);
TreeNode r3= new TreeNode(3);
TreeNode r4= new TreeNode(4);
TreeNode r5= new TreeNode(5);
TreeNode r6= new TreeNode(6);
root.left=r1;
root.right=r2;
r2.left=r3;
r2.right=r4;
r3.left=r5;
r3.right=r6;
List> list = new Solution().levelOrder(null);
System.out.println(list);
}
}classTreeNode {intval;
TreeNode left;
TreeNode right;
TreeNode(int x) { val =x; }
}