LeetCode二叉树层次遍历

给定二叉树,按照层次去遍历其每一个节点:

//层次遍历
public class LevelOrder {
    
    //主要实现
    public List<List<Integer>> levelOrder(TreeNode root) {
        //用来保存遍历顺序的集合,每一层用一个集合保存
        List<List<Integer>> res = new ArrayList<>();
        //用来保存每一层节点
        ArrayList<TreeNode> btList = new ArrayList<TreeNode>();
        //根节点入列
        if (root != null)
            btList.add(root);
        //如果节点的集合不为空,遍历节点
        while (!btList.isEmpty()) {
            //用于保存该层的节点的数值
            List<Integer> list = new ArrayList<>();
            
            //用于保存下一层的节点
            ArrayList<TreeNode> temp = new ArrayList<TreeNode>();
            //遍历节点,将数值保存到一个List中
            for (TreeNode t : btList) {
                list.add(t.val);
                //先将该节点的左节点保存到temp中
                if (t.left != null) {
                    temp.add(t.left);
                }
                //再将右节点保存到temp中
                if (t.right != null) {
                    temp.add(t.right);
                }
            }
            //遍历完成后,将遍历得到的数据集合添加到res
            res.add(list);
            //将btList清空
            btList.clear();
            //将下一层的节点添加到btList,继续遍历
            btList.addAll(temp);
        }
        return res;
    }
    
}

​ 2018.11.25

​ 粗略记录二叉树层次遍历,以便不忘记!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,973评论 1 31
  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 9,822评论 1 5
  • 上一篇文章讲述了树的概念, 特征以及分类, 旨在让我们理解什么是树, 树的一些常用的概念是什么,树的分类有哪些等。...
    DevCW阅读 6,335评论 4 10
  • 北京求学记 一一之三:正式求学(上) 话说:一九七七年九月三日(具体的日期不记得了),北无学校的微波班开始正式开班...
    昆仑草彭捷阅读 3,226评论 0 0
  • 这是家人拍的老家的照片,被我保存下来。看,好美啊!这些小朋友生活在绿油油的草地上,满是绿色的大树,像极了公园,不,...
    爱健忘的木木阅读 1,950评论 0 0

友情链接更多精彩内容