首页 > 其他 > 详细

层序遍历

时间:2020-06-24 10:27:29      阅读:58      评论:0      收藏:0      [点我收藏+]
什么是层序遍历

层序遍历就是从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
例如这样一个二叉树:
[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;
    }

层序遍历

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!