用Python写一个二叉树的非递归前序遍历并进行实例化
时间: 2023-03-27 16:04:49 浏览: 92
非常感谢您的提问。以下是回答:
可以使用栈来实现二叉树的非递归前序遍历。具体实现步骤如下:
1. 创建一个栈,将根节点入栈。
2. 循环执行以下步骤,直到栈为空:
a. 弹出栈顶节点,并输出该节点的值。
b. 如果该节点的右子节点不为空,则将右子节点入栈。
c. 如果该节点的左子节点不为空,则将左子节点入栈。
3. 遍历结束。
以下是Python代码实现:
```python
class TreeNode:
def __init__(self, val=, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorderTraversal(root: TreeNode) -> List[int]:
if not root:
return []
stack, res = [root], []
while stack:
node = stack.pop()
res.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
# 实例化二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 非递归前序遍历
print(preorderTraversal(root)) # 输出 [1, 2, 4, 5, 3]
```
希望能够帮助到您!
阅读全文