非递归遍历二叉树的源代码
时间: 2023-11-14 13:08:33 浏览: 81
二叉树非递归遍历源码
非递归遍历二叉树的常见做法是使用栈来模拟递归过程。实现过程中,我们需要先将根节点压入栈中,然后循环执行以下操作:
1. 取出栈顶元素,并将其访问(输出或处理);
2. 将栈顶元素的右子树(如果有)压入栈中;
3. 将栈顶元素的左子树(如果有)压入栈中。
具体代码如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def inorderTraversal(root: TreeNode) -> List[int]:
if not root:
return []
stack = []
res = []
curr = root
while curr or stack:
while curr:
stack.append(curr)
curr = curr.left
curr = stack.pop()
res.append(curr.val)
curr = curr.right
return res
```
以上是中序遍历的代码,前序遍历和后序遍历也可以使用类似的方式实现。只需要在访问节点的时候改变顺序即可。
阅读全文