二叉树遍历:先序、中序、后序与层序
146 浏览量
更新于2024-08-04
收藏 1.43MB DOCX 举报
"二叉树的遍历方法主要包括先序遍历、中序遍历、后序遍历和层序遍历。这些遍历方式是理解二叉树数据结构的关键,确保每个节点被访问一次且仅被访问一次。在创建二叉树时,通常采用先建左子树再建右子树的方式。以下将详细讨论这四种遍历方法。
首先,二叉树的节点定义如下:
```java
public class TreeNode {
public int data;
public TreeNode leftChild;
public TreeNode rightChild;
public TreeNode(int data) {
this.data = data;
}
}
```
创建二叉树的函数如下,它接收一个按顺序排列的整数链表,并从中构建二叉树:
```java
public static TreeNode createBinaryTree(LinkedList<Integer> list) {
TreeNode node = null;
if (list == null || list.isEmpty()) {
return null;
}
Integer data = list.removeFirst();
if (data != null) {
node = new TreeNode(data);
node.leftChild = createBinaryTree(list);
node.rightChild = createBinaryTree(list);
}
return node;
}
```
接着,我们来分别介绍四种遍历方式:
1. 先序遍历:访问顺序为根 -> 左 -> 右。对于给定的二叉树,先序遍历的结果是:ABDFECGHI。实现代码如下:
```java
public static void preOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
System.out.print(node.data + "");
preOrderTraversal(node.leftChild);
preOrderTraversal(node.rightChild);
}
```
2. 中序遍历:访问顺序为左 -> 根 -> 右。在给定的二叉树中,中序遍历的结果会有所不同。实现代码如下:
```java
public static void inOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
inOrderTraversal(node.leftChild);
System.out.print(node.data + "");
inOrderTraversal(node.rightChild);
}
```
3. 后序遍历:访问顺序为左 -> 右 -> 根。后序遍历的结果同样会根据树的结构而变化。实现代码如下:
```java
public static void postOrderTraversal(TreeNode node) {
if (node == null) {
return;
}
postOrderTraversal(node.leftChild);
postOrderTraversal(node.rightChild);
System.out.print(node.data + "");
}
```
4. 层序遍历:按照从上至下、从左至右的顺序访问每一层的节点。层序遍历通常需要借助队列来实现。例如,如果给定的二叉树是完全平衡的,层序遍历将按照每一层的顺序访问所有节点。实现代码如下:
```java
import java.util.LinkedList;
import java.util.Queue;
public static void levelOrderTraversal(TreeNode node) {
Queue<TreeNode> queue = new LinkedList<>();
if (node != null) {
queue.offer(node);
}
while (!queue.isEmpty()) {
TreeNode current = queue.poll();
System.out.print(current.data + "");
if (current.leftChild != null) {
queue.offer(current.leftChild);
}
if (current.rightChild != null) {
queue.offer(current.rightChild);
}
}
}
```
通过这四种遍历方法,我们可以对二叉树进行不同的访问,满足不同的需求,如查找、复制或打印特定顺序的节点。了解并掌握这些遍历策略对于理解和操作二叉树至关重要。"
235 浏览量
282 浏览量
241 浏览量
148 浏览量
140 浏览量
176 浏览量
2024-05-27 上传
2022-11-11 上传

sun7bear
- 粉丝: 1
最新资源
- VB通过Modbus协议控制三菱PLC通讯实操指南
- simfinapi:R语言中简化SimFin数据获取与分析的包
- LabVIEW温度控制上位机程序开发指南
- 西门子工业网络通信实例解析与CP243-1应用
- 清华紫光全能王V9.1软件深度体验与功能解析
- VB实现Access数据库数据同步操作指南
- VB实现MSChart绘制实时监控曲线
- VC6.0通过实例深入访问Excel文件技巧
- 自动机可视化工具:编程语言与正则表达式的图形化解释
- 赛义德·莫比尼:揭秘其开创性技术成果
- 微信小程序开发教程:如何实现模仿ofo共享单车应用
- TrueTable在Windows10 64位及CAD2007中的完美适配
- 图解Win7搭建IIS7+PHP+MySQL+phpMyAdmin教程
- C#与LabVIEW联合采集NI设备的电压电流信号并创建Excel文件
- LP1800-3最小系统官方资料压缩包
- Linksys WUSB54GG无线网卡驱动程序下载指南