栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指 Offer 32 - I. 从上到下打印二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指 Offer 32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   /
  9  20
    /  
   15   7
返回:

[3,9,20,15,7]
 

提示:

节点总数 <= 1000

解题思路:设置队列,初始先放一个root,进行循环终止条件是队列为空,每次循环先从队列中取出一个节点,将节点值放入链表中,再将该节点的左右孩子依次放入队列,进行下一次循环,最终将链表中的元素放入数组即可。

注意Queue是一个接口,和Stack类不同,接口不能实例化,只能由类实现,

Queue queue = new LinkedList();

入队列:

queue.add(Object) 满队时抛出异常 queue.offer(Object) 满队时返回false

出队列:

queue.remove() 队列为空时抛出异常 queue.poll() 空时返回null

查询队列头部元素:

queue.element()  队列为空抛出异常  queue.peek()  空时返回null

class Solution {
    public int[] levelOrder(TreeNode root) {
        int[] ret;
        if(root == null) return new int[0]; 
        Queue queue = new LinkedList();
        LinkedList list = new LinkedList();
        queue.add(root);
        TreeNode temp = new TreeNode();
        int len = 0;
        while(!queue.isEmpty()){
            temp = queue.remove();
            list.addLast(temp.val);
            len++;
            if(temp.left != null) queue.add(temp.left);
            if(temp.right != null) queue.add(temp.right);
        }
        ret = new int[len];
        for(int i = 0; i < len; i++){
            ret[i] = list.remove();
        }
        return ret;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820081.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号