二叉树遍历:先序、中序、后序与层序
84 浏览量
更新于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);
}
}
}
```
通过这四种遍历方法,我们可以对二叉树进行不同的访问,满足不同的需求,如查找、复制或打印特定顺序的节点。了解并掌握这些遍历策略对于理解和操作二叉树至关重要。"
sun7bear
- 粉丝: 1
- 资源: 121
最新资源
- gulishop_backend:一个基于vue和element-ul的二次开发项目
- capstone_cunysps
- google-homepage
- M1905播放器易语言源码-易语言
- DbfExporter-开源
- INFO6105_repo:数据科学工程存储库
- KCcoroutine:协程
- react-frec:这是一个类型库,用于编写简单的“ React.forwardRef”和“ React.ForwardRefExoticComponent”
- 0601、单电源运放图解资料手册.rar
- 删除重复文本-易语言
- alpine-droplet:用于数字海洋的Alpine Linux图像生成器
- landify:这是我在2020年11月进行的第一个项目
- 0548、单片机原理与应用实验指导书.rar
- movie_api
- DiskMonitor:适用于macOS的Apple DiskArbitration框架的简单包装程序包
- 位图结构易语言演示源码-易语言