用Python写一段二叉树的前序遍历
时间: 2023-03-31 20:02:21 浏览: 129
二叉树的前序遍历可以使用递归或者迭代的方式实现,以下是使用递归的方法:
```python
class TreeNode:
def __init__(self, val=, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
res = []
self.helper(root, res)
return res
def helper(self, node, res):
if not node:
return
res.append(node.val)
self.helper(node.left, res)
self.helper(node.right, res)
```
以上代码中,我们定义了一个 `TreeNode` 类来表示二叉树的节点,然后定义了一个 `Solution` 类来实现前序遍历。在 `preorderTraversal` 方法中,我们先创建一个空列表 `res`,然后调用 `helper` 方法来递归遍历二叉树。在 `helper` 方法中,我们首先将当前节点的值加入到 `res` 列表中,然后递归遍历左子树和右子树。最后,返回 `res` 列表即可。
如果要使用迭代的方式实现前序遍历,可以使用栈来辅助实现。具体实现方法可以参考以下代码:
```python
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
res = []
stack = [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
```
以上代码中,我们首先判断根节点是否为空,如果为空则直接返回空列表。然后创建一个空列表 `res` 和一个栈 `stack`,将根节点加入到栈中。在循环中,每次从栈中弹出一个节点,将其值加入到 `res` 列表中。然后先将右子节点加入到栈中,再将左子节点加入到栈中。这样可以保证左子节点先被访问。最后返回 `res` 列表即可。
阅读全文