输入:[1,2,3,null,null,4,5],
输出:[
[1],
[3,2],
[4,5]
]
思路:两个list交替执行,list1顺序取出删除并打印,然后将左右子树放入list2中,
list2顺序将左右子树放进list1中,list2逆序删除并打印
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
public class Test1111 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test1111 test = new Test1111();
test.run();
}
public void run() {
TreeNode a = new TreeNode(1);
TreeNode b = new TreeNode(2);
TreeNode c = new TreeNode(3);
TreeNode d = new TreeNode(4);
TreeNode e = new TreeNode(5);
TreeNode f = new TreeNode(6);
a.left = b;
a.right = c;
b.left = f;
c.right = null;
c.left = d;
c.right = e;
List<TreeNode> list1 = new LinkedList<TreeNode>();
List<TreeNode> list2 = new LinkedList<TreeNode>();
list1.add(a);
while(!list1.isEmpty() || !list2.isEmpty()) {
if(!list1.isEmpty()) {
while(!list1.isEmpty()) {
TreeNode temp = list1.remove(0);
if(temp.left!=null) {
list2.add(temp.left);
}
if(temp.right!=null){
list2.add(temp.right);
}
System.out.print(temp.val+" ");
}
System.out.println();
}
if(!list2.isEmpty()) {
int i=0;
while(i<list2.size()) {
TreeNode temp = list2.get(i);
if(temp.left!=null) {
list1.add(temp.left);
}
if(temp.right!=null){
list1.add(temp.right);
}
i++;
}
while(!list2.isEmpty()) {
System.out.print(list2.remove(list2.size()-1).val+" ");
}
System.out.println();
}
}
}
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int val){
this.val = val;
}
}
}