美文网首页
剑指offer11

剑指offer11

作者: MonarchNie | 来源:发表于2019-07-08 11:31 被阅读0次

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

解题思路

其实这道题多了一个每一层输出一行,我相信要是直接在一行输出的话,大家都知道怎么在一行输出,用一个队列就可以实现,但是多了一个每一层输出一行的条件之后,其实也不麻烦,我们只需要在输出的打印的时候知道每层有多少个节点就好了,就可以解决换行输出这个问题了

代码实现

public ArrayList<ArrayList<Integer>> print(TreeNode pRoot) {
    if (pRoot == null) {
        return null;
    }
    ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();
    Queue<TreeNode> queue = new LinkedList<TreeNode>(); 
    queue.offer(pRoot);
    //声明两个用于记录整数,start用来记录这一层已经访问了几个节点了,end用于记录当前层的所有节点数
    int start = 0, end = 1;
    ArrayList<Integer> list = new ArrayList<Integer>();
    while (!queue.isEmpty()) {
        TreeNode node = queue.remove();
        list.add(node.val);
        // 访问过的节点数+1
        start++;
        // 正在访问的节点的左孩子入队列(如果不为空的话)
        if (node.left != null) {
            queue.offer(node.left);
        }
        //正在访问的节点的右孩子入队列(如果不为空的话)
        if (node.right != null) {
            queue.offer(node.right);
        }
        //判断是否该层的节点全访问了没有
        if (start == end) {
            //从新开始计数下一层的访问个数
            start = 0;
            //下一层的节点个数
            end = queue.size();
            lists.add(list);
            list = new ArrayList<Integer>();
        }
    }
    return lists;
}

相关文章

  • 剑指offer11

    题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路 其实这道题多了一个每一层输出...

  • 剑指offer|11-20题解题思路及代码(Java版)

    剑指offer11到20题总览: 二进制中1的个数 数值的整数次方 调整数组顺序使奇数位于偶数前面 链表中倒数第k...

  • 剑指

    遥望中原九点烟,风云直上七重天。 今朝再向江湖去,一剑流星谁比肩? 2011.10(1488)

  • 剑指

    1. 二维数组中查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer

    第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...

  • 剑指BAT

    Android工作5年半了,一毕业就开始做这行。在现在这家公司工作了3年整,最近有换工作的打算,所以在猎聘...

  • 《剑指offer》

    4.调整数组顺序使奇数位于偶数前面 题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇...

  • 气剑指

    “聚气于指尖,凝其成剑,利可断金。”牢头对身边的狱卒说。 只见牢头举起的右手指尖逐渐变红,转而变白,隐隐发出音量很...

  • 剑指offer

    二维数组中查找数在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到...

网友评论

      本文标题:剑指offer11

      本文链接:https://www.haomeiwen.com/subject/vbcohctx.html