二叉树的层序遍历算法实现

一,问题描述

实现二叉树的层序遍历--从根开始,依次向下,对于每一层从左向右遍历。

 

二,算法分析

层序遍历与先序、中序、后序遍历不同。层序遍历用到了队列,而先、中、后序需要用到栈。

因此,先、中、后序遍历 可以 采用递归方式来实现,而层序遍历则没有递归方式。

算法步骤:

初始时,根结点入队列

然后,while循环判断队列不空时,弹出一个结点,访问它,并把它的所有孩子结点入队列。

 

三,代码实现

复制代码
 1     public void levelTraverse(BinarySearchTree<T> tree){
 2         levelTraverse(tree.root);
 3     }
 4     private void levelTraverse(BinaryNode<T> root){
 5         if(root == null)
 6             return;
 7         
 8         Queue<BinaryNode<T>> queue = new LinkedList<>();//层序遍历时保存结点的队列
 9         queue.offer(root);//初始化
10         while(!queue.isEmpty()){
11             BinaryNode<T> node = queue.poll();
12             System.out.print(node.element + " ");//访问节点
13             if(node.left != null)
14                 queue.offer(node.left);
15             if(node.right != null)
16                 queue.offer(node.right);
17         }
18     }
复制代码

二叉搜索树的完整实现代码参考:

二叉查找树的递归实现及递归分析中的完整代码实现部分

或者参考:

二叉树的操作之统计二叉树中节点的个数中的完整代码实现部分

 

posted @   大熊猫同学  阅读(33249)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示