码迷,mamicode.com
首页 > 其他好文 > 详细

层序遍历

时间:2020-06-24 09:15:25      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:nod   link   int   res   一个   ++   ima   结果   分层   

什么是层序遍历

层序遍历就是从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
例如这样一个二叉树:
[3,9,20,null,null,15,7]
技术图片
返回结果为:
技术图片

代码实现:

ArrayList<ArrayList<Integer>> Print(TreeNode pRoot){
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        if (pRoot == null) {
            return res;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(pRoot);//先存入根结点,即从根结点开始遍历
        while (!queue.isEmpty()) {
            ArrayList<Integer> arrayList = new ArrayList<>();//用来存放每一层遍历到的结点
            int n = queue.size();//记录 queue 的大小是为了分层
            for (int i = 0; i < n; i++) {
                TreeNode node = queue.poll();//将 queue 中所有的结点取出并删除
                arrayList.add(node.val);//将 queue 中取出的结点放入 arrayList 中,arrayList中只存放了当前这层的所有结点,同时也将每一层分开输出
                if (node.left != null) {//将下一层的结点又放入进 queue 中
                    queue.add(node.left);
                }
                if (node.right != null) {
                    queue.add(node.right);
                }
            }
            res.add(arrayList);//将每一层遍历到的所有结点作为一个整体放入最后要输出的 res 中
        }
        return res;
    }

层序遍历

标签:nod   link   int   res   一个   ++   ima   结果   分层   

原文地址:https://blog.51cto.com/14298563/2506723

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!