python二叉树递归
时间: 2023-06-28 09:05:55 浏览: 95
二叉树是一种常见的数据结构,它由节点、左子树和右子树组成。其中每个节点包含一个值和两个指针,分别指向其左子树和右子树。
在Python中,我们可以使用类来表示一个二叉树节点,同时使用递归来遍历二叉树。
下面是一个示例代码,演示了如何使用递归实现二叉树的前序遍历、中序遍历和后序遍历:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
"""
前序遍历
"""
res = []
def helper(node):
if not node:
return
res.append(node.val)
helper(node.left)
helper(node.right)
helper(root)
return res
def inorderTraversal(self, root: TreeNode) -> List[int]:
"""
中序遍历
"""
res = []
def helper(node):
if not node:
return
helper(node.left)
res.append(node.val)
helper(node.right)
helper(root)
return res
def postorderTraversal(self, root: TreeNode) -> List[int]:
"""
后序遍历
"""
res = []
def helper(node):
if not node:
return
helper(node.left)
helper(node.right)
res.append(node.val)
helper(root)
return res
```
在上面的代码中,我们定义了一个`TreeNode`类来表示二叉树节点,其中包含一个值`val`,以及左右子树的指针`left`和`right`。
然后,我们定义了一个`Solution`类,其中包含了三个方法`preorderTraversal`、`inorderTraversal`和`postorderTraversal`,分别用于实现二叉树的前序遍历、中序遍历和后序遍历。
在每个方法中,我们使用递归来遍历二叉树。具体地,我们定义了一个辅助函数`helper`,它接受一个节点作为参数,然后按照遍历顺序执行相应的操作(前序遍历先访问根节点,中序遍历中间访问根节点,后序遍历最后访问根节点)。
最后,我们在每个方法中调用`helper`函数,并返回遍历结果。
以上就是使用递归实现二叉树遍历的Python代码示例。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.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://img-home.csdnimg.cn/images/20241231044901.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)