【剑指offer】层序打印二叉树

    // 层序遍历二叉树
    public void printTreeByLevel(TreeNode root){

        if(root == null)
            return;

        Queue<TreeNode> q = new LinkedList<>(); // 用来暂存遍历的节点
        q.offer(root);

        int current = 1; // 用来记录当前层还需要打印的节点数目
        int next = 0; // 用来记录下一层需要打印的节点数目

        while(!q.isEmpty()){
            TreeNode tmp = q.poll();
            System.out.print(tmp.val + " ");
            current --;
            if(tmp.left != null){
                q.offer(tmp.left);
                next ++;
            }
            if(tmp.right != null){
                q.offer(tmp.right);
                next ++;
            }
            if(current == 0){   // 到达层尾后,换行,更新计数
                System.out.println();
                current = next;
                next = 0;
            }
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容