import java.util.Queue;
import java.util.LinkedList;
class TreeNode {
int value;
TreeNode left;
TreeNode right;
TreeNode(int value) {
this.value = value;
}
}
public class Main {
//levelOrder创建层序遍历方法
public static void levelOrder(TreeNode root) {
if (root == null) return;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);//offer() 方法用于将元素插入到队列中
while (!queue.isEmpty()) {//当队列不为空时
TreeNode node = queue.poll();
//queue.poll() 是从队列 queue 中移除并返回队列的头部元素。第一次执行时,将根节点取出。
System.out.print(node.value + " ");
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
}
public static void main(String[] args) {
// 构造一个示例二叉树
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
System.out.println("层序遍历结果:");
levelOrder(root);//调用层序方法
}
}
关于如何理解这个levelorder方法:
例如我们输入1作为root
第一次那么TreeNode node = queue.poll();这个node相当于一个tep,此时queue中只有root,那么输出root的value即1。
第二次,查看root的子节点是否为空,例如其分别为2、3,那么将2、3载入queue,接着输出2 。
第三次,检查2、3的子节点,例如为4、5、6、7,然后将其载入queue,输出3 。
第四次,假设我们只有三层,那么输入4,然后两个if就都不运行了。
第五第六第七次,输出5、6、7,层序遍历完成
深入二叉树层序遍历(快速建立二叉树并层序输出)
通常我们不会使用如上那样的办法去创建一个二叉树
快速建立二叉树并层序输出 可以分为几个部分
创建一个二叉树类
创建一个快读类
写一个层序输出方法
写一个创建二叉树方法
import java.util.Queue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.LinkedList;
class TreeNode{
int value;
TreeNode left;
TreeNode right;
TreeNode(int value){
this.value = value;
}
}
public class Main{
public static void levelOrder(TreeNode root) {
if(root==null)return;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
System.err.print(node.value);
if(node.left!=null) {
queue.offer(node.left);
}
if(node.right!=null) {
queue.offer(node.right);
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**






**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**
小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**
<img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbea7428752dc7ffd34.jpg" alt="img" style="zoom:50%;" />