1. 二叉树遍历基础概念
在计算机科学中,二叉树是一种非常重要的数据结构,它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。遍历二叉树意味着按照某种顺序访问树中的所有节点,而前序、中序和后序遍历是三种最基本的遍历方式。
这三种遍历方式的区别主要在于访问根节点、左子树和右子树的顺序不同。理解这些遍历方式不仅对学习数据结构至关重要,在实际开发中也经常遇到需要处理树形结构的场景。比如文件系统的目录结构、DOM树的操作、数据库索引的实现等都离不开对树结构的遍历。
提示:虽然这三种遍历方式看起来简单,但很多初学者容易混淆它们的顺序。记住一个基本原则:前序的"前"指的是根节点在前访问,中序的"中"指的是根节点在中间访问,后序的"后"指的是根节点最后访问。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 前序遍历详解与应用
2.1 前序遍历的定义与实现
前序遍历的顺序是:根节点 → 左子树 → 右子树。也就是说,我们首先访问当前节点,然后递归地遍历左子树,最后递归地遍历右子树。
用伪代码表示前序遍历的递归实现:
python复制def preorder_traversal(node):
if node is None:
return
print(node.value) # 访问根节点
preorder_traversal(node.left) # 遍历左子树
preorder_traversal(node.right) # 遍历右子树
非递归实现通常使用栈来模拟递归过程:
python复制def preorder_traversal_iterative(root):
if not root:
return
stack = [root]
while stack:
node = stack.pop()
print(node.value)
# 注意右子节点先入栈,这样左子节点会先出栈
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
