用Python写一个二叉树的非递归前序遍历
时间: 2023-03-23 15:02:37 浏览: 105
好的,我可以帮您用Python编写一个二叉树的非递归前序遍历。
首先,我们需要定义一个二叉树的节点类:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
接下来,我们可以定义一个函数,实现二叉树的非递归前序遍历:
```python
def preorderTraversal(root):
if not root:
return []
stack = [root]
result = []
while stack:
node = stack.pop()
result.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return result
```
这个函数首先判断根节点是否为空,如果为空则直接返回一个空列表。否则,我们使用一个栈来保存遍历过的节点,从根节点开始,将其入栈。在每次循环中,我们取出栈顶元素,将其值添加到结果列表中,然后按照右子节点、左子节点的顺序将其非空子节点入栈。直到栈为空,遍历结束。
您可以调用这个函数并传入您所定义的二叉树的根节点来得到前序遍历结果。
阅读全文