二叉树是一种常见的数据结构,它由节点和链接组成,每个节点包含一个值和指向其左右子节点的指针。在对二叉树进行操作时,一种常见的需求是对树进行遍历,以便访问所有节点。本文将介绍一种基于迭代法的算法来实现二叉树的中序遍历,以及如何用 Swift 语言实现这个算法。
中序遍历是指按照节点值从小到大的顺序访问二叉树的节点。通常,中序遍历使用递归实现,但在某些情况下,递归可能会导致栈溢出。为了避免这种情况,我们可以使用迭代法实现中序遍历。
算法思路
迭代法中序遍历的算法思路如下:
- 创建一个栈,用来存储待访问的节点。
- 首先将根节点入栈。
- 从根节点开始,不断将其左子节点入栈,直到遇到叶子节点。
- 弹出栈顶节点,访问该节点的值。
- 将栈顶节点的右子节点入栈,继续从步骤3开始执行,直到栈为空。
Swift 实现
下面是用 Swift 语言实现迭代法中序遍历的代码:
class TreeNode {
var val: Int
var