二叉树前序遍历python
时间: 2024-01-30 14:12:26 浏览: 40
以下是二叉树前序遍历的Python代码示例:
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def preorderTraversal(self, root):
ret, stack = [], [root]
while stack:
node = stack.pop()
if node:
ret.append(node.val)
stack.append(node.right)
stack.append(node.left)
return ret
```
这段代码使用了一个栈来实现非递归的前序遍历。首先将根节点压入栈中,然后循环执行以下操作:弹出栈顶节点,将其值加入结果列表中,然后先将右子节点压入栈中,再将左子节点压入栈中。重复这个过程直到栈为空。最后返回结果列表。
相关问题
二叉树完成前序遍历 python
二叉树的前序遍历是指先访问根节点,然后按照先左后右的顺序遍历左右子树。下面是一个用Python实现的二叉树前序遍历的递归算法:
```python
def preorderTraversal(root):
if root is not None:
print(root.val)
preorderTraversal(root.left)
preorderTraversal(root.right)
```
其中,`root`表示二叉树的根节点。这个算法会先打印根节点的值,然后递归地遍历左子树和右子树。可以根据需要进行相应的修改和调用。
#### 引用[.reference_title]
- *1* *2* [二叉树的前序遍历,中序遍历以及后序遍历的python写法](https://blog.csdn.net/weixin_41959157/article/details/119079689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [python-二叉树的前序遍历、中序遍历和后序遍历](https://blog.csdn.net/xili1342/article/details/128847282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
python前序遍历二叉树
在Python中,可以使用递归的方式实现二叉树的前序遍历。前序遍历的顺序是先访问根节点,然后递归地访问左子树,最后递归地访问右子树。
下面是一个示例代码,实现了二叉树的前序遍历:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorderTraversal(root):
if root is None:
return []
result = []
result.append(root.val)
result += preorderTraversal(root.left)
result += preorderTraversal(root.right)
return result
```
在这个示例中,我们定义了一个`TreeNode`类来表示二叉树的节点。每个节点包含一个值`val`,以及左子树`left`和右子树`right`。
`preorderTraversal`函数接受一个二叉树的根节点作为参数,并返回一个列表,表示前序遍历的结果。首先判断根节点是否为空,如果为空则返回空列表。然后将根节点的值加入结果列表中,然后递归地对左子树和右子树进行前序遍历,并将结果合并到结果列表中。
使用示例:
```python
# 构造二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 前序遍历二叉树
result = preorderTraversal(root)
print(result) # 输出: [1, 2, 4, 5, 3]
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)