蓝桥杯JavaB组之树的基础(二叉树遍历)
- IT业界
- 2025-09-02 15:42:02

Day 4:树的基础(二叉树遍历)
一、什么是树?
树(Tree)是一种 层次结构 的数据结构,它由节点(Node)组成,每个节点可以有 多个子节点。树的应用非常广泛,如:
文件系统数据库索引二叉搜索树(BST)网络路由树二、二叉树(Binary Tree)基础 1. 什么是二叉树?
二叉树是一种特殊的树形结构,每个节点最多有两个子节点:
左子节点(Left Child)右子节点(Right Child) 2. 二叉树的基本概念 根节点(Root):二叉树的顶层节点叶子节点(Leaf):没有子节点的节点父节点(Parent):拥有子节点的节点子节点(Children):属于某个父节点的节点高度(Height):从叶子节点到根节点的最长路径长度深度(Depth):某个节点到根节点的路径长度示例二叉树:
1
/ \
2 3
/ \ \
4 5 6
三、二叉树的遍历
二叉树遍历有 两大类:
深度优先遍历(DFS) 前序遍历(Preorder):根 → 左 → 右中序遍历(Inorder):左 → 根 → 右后序遍历(Postorder):左 → 右 → 根 广度优先遍历(BFS) 层序遍历(Level Order) 1. 二叉树节点定义在 Java 中,二叉树的基本节点(TreeNode)可以这样定义:
class TreeNode {
int value; // 节点值
TreeNode left; // 左子节点
TreeNode right; // 右子节点
public TreeNode(int value) {
this.value = value;
this.left = null;
this.right = null;
}
}
四、递归遍历二叉树
递归(Recursion)是二叉树遍历的常见方式,它利用函数调用栈来实现深度优先搜索。
1️⃣ 前序遍历(Preorder Traversal)
访问顺序: 根 → 左 → 右
public class BinaryTreeTraversal {
// 前序遍历
public static void preorder(TreeNode root) {
if (root == null) return; // 递归终止条件
System.out.print(root.value + " "); // 访问根节点
preorder(root.left); // 递归访问左子树
preorder(root.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.right = new TreeNode(6);
System.out.print("前序遍历:");
preorder(root);
}
}
✅ 运行结果:
前序遍历:1 2 4 5 3 6
2️⃣ 中序遍历(Inorder Traversal)
访问顺序: 左 → 根 → 右
public class BinaryTreeTraversal {
// 中序遍历
public static void inorder(TreeNode root) {
if (root == null) return; // 递归终止条件
inorder(root.left); // 递归访问左子树
System.out.print(root.value + " "); // 访问根节点
inorder(root.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.right = new TreeNode(6);
System.out.print("中序遍历:");
inorder(root);
}
}
✅ 运行结果:
中序遍历:4 2 5 1 3 6
3️⃣ 后序遍历(Postorder Traversal)
访问顺序: 左 → 右 → 根
public class BinaryTreeTraversal {
// 后序遍历
public static void postorder(TreeNode root) {
if (root == null) return; // 递归终止条件
postorder(root.left); // 递归访问左子树
postorder(root.right); // 递归访问右子树
System.out.print(root.value + " "); // 访问根节点
}
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.right = new TreeNode(6);
System.out.print("后序遍历:");
postorder(root);
}
}
✅ 运行结果:
后序遍历:4 5 2 6 3 1
五、二叉树遍历总结
遍历方式
访问顺序
适用场景
前序遍历
根 → 左 → 右
适合 复制树、表达式计算
中序遍历
左 → 根 → 右
适合 二叉搜索树(BST)遍历
后序遍历
左 → 右 → 根
适合 删除节点、释放内存
六、二叉树常考点与易错点 �� 1. 常考点
✅ 递归 vs 迭代遍历 ✅ 二叉树的构造与遍历 ✅ 二叉搜索树的中序遍历(结果是有序的)
�� 2. 易错点
❌ 递归终止条件错误
if (root == null) return;
❌ 错误的访问顺序
System.out.print(root.value + " "); // 误将根节点提前打印
inorder(root.left);
inorder(root.right);
✅ 正确的中序遍历
inorder(root.left);
System.out.print(root.value + " ");
inorder(root.right);
�� 七、学习建议 递归终止条件:在递归实现遍历的过程中,要注意递归的终止条件,即当节点为空时要及时返回,否则会导致栈溢出错误。遍历顺序混淆:前序、中序、后序遍历的顺序容易混淆,在写代码时要仔细区分不同遍历方式的访问顺序。边界情况处理:对于空树的情况,要确保代码能够正确处理,避免出现空指针异常。
二叉树的遍历:前序、中序、后序遍历的递归实现。
树的构造:根据遍历结果重建二叉树。
树的深度和高度:计算二叉树的深度或高度。
树的遍历应用:如查找特定节点、统计节点数量等。
蓝桥杯JavaB组之树的基础(二叉树遍历)由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“蓝桥杯JavaB组之树的基础(二叉树遍历)”