二叉树层级遍历

LintCode 二叉树层级遍历

解题思路:队列(先进先出)

将每层的节点插入到队列中, 然后遍历队列,再将下一层级的节点插入到队列中, 直到最后

如图中二叉树

image

先将根节点放入队列中如下图

image

然后遍历队列,循环取出队头元素,再将队元元素的左右节点放入到队列中,如下图

image

如此循环直到二叉树最深层级

代码如下:

public List<List<Integer>> levelOrder(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        
        List<List<Integer>> tree = new ArrayList<List<Integer>>();
        if(root == null)
            return tree;
        queue.offer(root);
        while(!queue.isEmpty()){
            ArrayList<Integer> list = new ArrayList<Integer>();
            int size = queue.size();
            for(int i=0;i<size;i++){
                TreeNode head = queue.poll();
                list.add(head.val);
                if(head.left!=null){
                    queue.offer(head.left);
                }
                if(head.right!=null){
                    queue.offer(head.right);
                }
            }
            tree.add(list);
        }
        return tree;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,491评论 1 31
  • From 【左程云面试算法精品课】 如果层序遍历,直接用一个队列即可: 但是如果要去按层输出,每层一行,该怎么办?...
    WilliamY阅读 337评论 0 0
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,322评论 1 5
  • 一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那...
    24K男阅读 6,783评论 5 14
  • 看了场韩国电影。 一对17岁的高中生,生出了早衰症的儿子,他只能活到17岁。 电影正好是这对年轻夫妻,年龄到了33...
    安星阅读 165评论 0 0