剑指offer 之 二叉树按层遍历

2018-01-18  本文已影响0人  筱橙子丶

/*

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;

        }

}

}

上一篇 下一篇

猜你喜欢

热点阅读