二叉树层序遍历实现

二叉树层序遍历实现二叉树的层序遍历下图是一个简单的二叉树例图实现思路:1.创建一个队列用于二叉树的层序遍历。2.将二叉树根节点插入队列中。3.通过while循环遍历二叉树,直至遍历完整个二叉树后则结束循环。4.每次循环开始时先进行出队操作,若当前出队元素为null则证明已经完成层序遍历结束循环循环,若不为null则打印该节点的值,并判断该节点是否存在左右子树,若存在则依次插入队列中。图解上述二叉树的层序遍历过程依次进行图上操作直至最终队列为空时则层序遍历结束。实现代码如下:classTreeNod

大家好,又见面了,我是你们的朋友全栈君。

二叉树的层序遍历

下图是一个简单的二叉树例图

在这里插入图片描述

实现思路:

1.创建一个队列用于二叉树的层序遍历。

2.将二叉树根节点插入队列中。

3.通过while循环遍历二叉树,直至遍历完整个二叉树后则结束循环。

4.每次循环开始时先进行出队操作,若当前出队元素为null则证明已经完成层序遍历结束循环循环,若不为null则打印该节点的值,并判断该节点是否存在左右子树,若存在则依次插入队列中。

图解上述二叉树的层序遍历过程

在这里插入图片描述

在这里插入图片描述

依次进行图上操作直至最终队列为空时则层序遍历结束。

实现代码如下:

class TreeNode{ 

int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) { 

this.val = val;
}
}
public class day_0410 { 

public static void main(String[] args) { 

TreeNode a=new TreeNode(1);
TreeNode b=new TreeNode(2);
TreeNode c=new TreeNode(3);
TreeNode d=new TreeNode(4);
TreeNode e=new TreeNode(5);
TreeNode f=new TreeNode(6);
TreeNode g=new TreeNode(7);
a.left=b;
a.right=c;
b.left=d;
b.right=e;
c.left=f;
c.right=g;
level(a);
}
public static void level(TreeNode root){ 

if (root==null){ 

return;
}
Queue<TreeNode> queue=new LinkedList<>();
//将根节点插入队列中
queue.offer(root);
while (true){ 

//创建一个临时变量cur存储出队元素
TreeNode cur=queue.poll();
//当没有元素可以出队时则代表已经层序遍历结束,跳出循环
if (cur==null){ 

break;
}
//打印当前节点的值
System.out.print(cur.val);
//当前出队节点拥有左子树则将左子树入队
if (cur.left!=null){ 

queue.offer(cur.left);
}
//当前出队节点拥有右子树则将右子树入队
if (cur.right!=null){ 

queue.offer(cur.right);
}
}
}
}

运行结果如下所示:

在这里插入图片描述

如有不足还请指正,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143385.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • lseek函数的用法

    lseek函数的用法所有打开的文件都有一个当前文件偏移量(currentfileoffset),以下简称为cfo。cfo通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于cfo,并且使cfo增大,增量为读写的字节数。文件被打开时,cfo会被初始化为0,除非使用了O_APPEND 。   使用lseek函数可以改变文件的cfo。       #in…

  • 学习Maven之Maven Surefire Plugin(JUnit篇)「建议收藏」

    学习Maven之Maven Surefire Plugin(JUnit篇)「建议收藏」1.mavensurefireplugin是个什么鬼?如果你执行过或者执行其他maven命令时跑了测试用例,你就已经用过了。是maven里执行测试用例的插件,不显示配置就会用默认配置。这个

  • docker-compose 集群_基于hadoop的集群搭建

    docker-compose 集群_基于hadoop的集群搭建前言实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器。我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有

  • 笔试题(贪心)[通俗易懂]

    笔试题(贪心)[通俗易懂]题解多余的数字每次都往左边分配,每次都分配剩余的再向右分配,向右分配不足的需要再从右边多余的数组分配过来,所以就搬动了2次#include<bits/stdc++.h>using namespace std;const long long N = 1e5 + 10;int a[N];int main(){ int n,sum = 0; cin>>n; for(int i = 0;i < n;i ++)cin>>a[i],sum..

  • linux教程,linux视频教程,linux…

    linux教程,linux视频教程,linux…IBM的linux学习资源—Linux编程和系统管理新手入门: http://www.ibm.com/developerworks/cn/linux/newto/Windows到Linux之旅:系列文章概述: http://www.ibm.com/developerworks/cn/linux/l-roadmap/index.html为Windows用户准备的简明L

  • Ext3语法笔记——apply与applyIf

    Ext3语法笔记——apply与applyIf1.apply与applyIf   两者都是用于copy对象属性   Ext.apply(trgObj,sourceObj,[optObj]);    Ext.applyIf(trgObj,sourceObj,[optObj]);   trgObj,目标对象,属性要copy到它;sourceObj,源对象,用它的属性来copy,optObj可选,目标…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号