从上到下打印二叉树

本文详细介绍了如何使用Java实现二叉树的广度优先搜索(BFS),通过队列数据结构逐层遍历并存储节点值,特别关注了初始处理和特例情况。

从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS)。

BFS通常借助队列先进先出的特性去实现。

java:

 //队列先进先出的特性

        Queue<TreeNode> queue = new LinkedList<>();

        //定义一个接受结果的容器

        ArrayList<List<Integer>> list = new ArrayList<>();

特例处理: 当根节点为空,则返回空列表 [] ;

  if(root != null){

            queue.add(root);

        }
BFS 循环: 当队列 queue 为空时跳出;

 while(!queue.isEmpty()){

            //由于该题是将每一层放进一个集合所以将每次循环看成一层的话

            //每层需要初始化一个集合来接受

//新建一个临时列表 tmp ,用于存储当前层打印结果;

            ArrayList<Integer> temp = new ArrayList<>();

            //此时队列的长度就是该集合的内容

            for(int i = queue.size();i > 0;  i--){

                //将队列的头部元素弹出

                TreeNode cur = queue.poll();

                temp.add(cur.val);

                //判断当前节点的左右子节点是否为空

                //不为空则继续补入队列完成下一次循环

                if(cur.left != null){

                    queue.add(cur.left);

                }

                if(cur.right != null){

                    queue.add(cur.right);

                }

            }

            

            list.add(temp);

        }

        return list;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值