考虑以下二叉树示例:
1 / \ 2 3 / 5
中序遍历的结果是:4 -> 2 -> 5 -> 1 -> 3
递归是最常见的中序遍历实现方法之一。你可以利用递归函数来遍历树节点。

class TreeNode: def __init__(self, value): self.value = value self.left = None self.right = Nonedef inorder_recursive(root): if root: # 先遍历左子树 inorder_recursive(root.left) # 访问当前节点 print(root.value) # 再遍历右子树 inorder_recursive(root.right)# 创建示例树root = TreeNode(1)root.left = TreeNode(2)root.right = TreeNode(3)root.left.left = TreeNode(4)root.left.right = TreeNode(5)# 中序遍历示例树inorder_recursive(root)
迭代实现中序遍历
你也可以利用迭代方法实现中序遍历,常日借助一个栈来赞助遍历。
def inorder_iterative(root): stack = [] current = root while stack or current: # 将左子树节点入栈 while current: stack.append(current) current = current.left # 弹出节点并访问 current = stack.pop() print(current.value) # 遍历右子树 current = current.right# 利用示例树进行中序遍历inorder_iterative(root)
中序遍历的运用处景二叉搜索树(BST)的中序遍历:中序遍历BST会得到一个有序序列,因此中序遍历是对BST进行排序的一种有效方法。表达式求值:对付表达式树,中序遍历可以帮助你将中缀表达式转化为后缀表达式,以便进行求值。线索二叉树:中序遍历线索二叉树可以在不该用递归或栈的情形下实现对二叉树的中序遍历。构建二叉搜索树:通过中序遍历已排序的节点序列,可以构建出一个平衡的二叉搜索树。
通过学习和实践中序遍历算法,你将逐渐提升自己的数据构造与算法能力,并能够更好地运用它们办理实际问题。加油!
每天坚持学习一点点,不求有回报,只愿可以丰富自己!
!
!