剑指Offer(Java版)第二十七题:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

/*
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
层序遍历时,一般都要用到队列,
可以用LinkedList类(方法:poll() 和 offer(Obj) )。
*/

import java.util.*;

public class Class27 {

public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;
}
}

public void sequencePrintTree(TreeNode root){
if(root == null){
return;
}
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
TreeNode node = null;
while(queue.size() != 0){
node = queue.poll();
System.out.print(node.val + " ");
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
System.out.println();
}

private void test() {
TreeNode[] nodes = new TreeNode[15];
for(int i=0;i<15;i++) {
nodes[i]= new TreeNode(i+1);
}
for(int i=0;i<7;i++) {
nodes[i].left=nodes[2*i+1];
nodes[i].right=nodes[2*i+2];
}
sequencePrintTree(nodes[0]);
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Class27 c = new Class27();
c.test();

}

}

猜你喜欢

转载自www.cnblogs.com/zhuozige/p/12507812.html