非递归中序遍历二叉树
时间: 2023-06-30 14:26:51 浏览: 96
二叉树的几种操作,包括递归先序建立二叉树、先序遍历、中序遍历、后序遍历、非递归的各种遍历
5星 · 资源好评率100%
非递归中序遍历二叉树的方法是使用栈。具体步骤如下:
1. 创建一个空栈,将根节点入栈。
2. 如果栈不为空,执行以下操作:
a. 将栈顶元素弹出,并将其右子树(如果存在)入栈。
b. 将栈顶元素的左子树(如果存在)入栈。
3. 重复步骤2,直到栈为空。
实际上,这个过程就是对二叉树进行中序遍历的过程。下面是一个示例代码实现:
```python
def inorderTraversal(root):
stack = []
res = []
while stack or root:
if root:
stack.append(root)
root = root.left
else:
node = stack.pop()
res.append(node.val)
root = node.right
return res
```
其中,root代表当前节点,stack代表栈,res代表最终的遍历结果。这段代码的时间复杂度为$O(n)$,空间复杂度为$O(n)$,其中n为二叉树节点数。
阅读全文