import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class 面试题23_从上往下打印二叉树 {
/*题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
*/
public static void main(String[] args) {
BinaryTreeNode root1=new BinaryTreeNode(8);
BinaryTreeNode sec=root1.left=new BinaryTreeNode(8);
root1.right=new BinaryTreeNode(7);
sec.left=new BinaryTreeNode(9);
BinaryTreeNode third=sec.right=new BinaryTreeNode(2);
third.left=new BinaryTreeNode(4);
third.right=new BinaryTreeNode(7);
//root1=null;
bianLiQian(root1);
BinaryTreeNode root2=new BinaryTreeNode(8);
root2.left=new BinaryTreeNode(9);
root2.right=new BinaryTreeNode(2);
System.out.println();
bianLiQian(root2);
System.out.println();
printFromTopToBottom(root1);
System.out.println();
printFromTopToBottom(null);
}
public static void bianLiQian(BinaryTreeNode root1){
if(root1!=null){
System.out.print(root1.data+" ");
bianLiQian(root1.left);
bianLiQian(root1.right);
}
}
public static ArrayList<Integer> printFromTopToBottom(BinaryTreeNode root){
Queue<BinaryTreeNode> q=new LinkedList<BinaryTreeNode>();
ArrayList<Integer> list=new ArrayList<Integer>();
BinaryTreeNode p=root;
if(root==null){
return list;
}
q.add(p);
while(!q.isEmpty()){
BinaryTreeNode temp=q.poll();
System.out.print(temp.data+" ");
list.add(temp.data);
if(temp.left!=null){
q.add(temp.left);
}
if(temp.right!=null){
q.add(temp.right);
}
}
//System.out.println(list);
return list;
}
}