/*
public class TreeNode {
Objectval;
TreeNodeleft;
TreeNoderight;
public TreeNode(Object val){
this.val = val;
}
}*/
思路:加上last和nLast两个变量,初始时都指向root, 然后每次遍历时,nLast指向当前行的下一行的最后一个节点,last指向当前行的最后一个节点。如果last等于当前打印的变量,即当前打印的是最后一个节点,输出换行符,nLast 的值赋值给last;
/**
* 按层遍历二叉树
*/
public void searchTreeByCen(TreeNode root){
TreeNode last;
TreeNode nLast;
Queuequeue =new LinkedBlockingDeque<>();
queue.add(root);
last = root;
nLast = root;
while (!queue.isEmpty()){
TreeNode tmp = queue.poll();
System.out.print(tmp.val+" ");
if (tmp.left !=null){
queue.add(tmp.left);
nLast = tmp.left;
}
if (tmp.right !=null){
queue.add(tmp.right);
nLast = tmp.right;
}
if (last == tmp){
System.out.println();
last = nLast;
}
}
}
网友评论