用python用函数求二叉树一个节点的所有左孩子不用考虑是否有左孩子
时间: 2024-05-04 15:21:44 浏览: 15
假设二叉树的节点类为`Node`,包含属性`val`、`left`和`right`,其中`val`表示节点值,`left`和`right`分别表示左子节点和右子节点,如果没有子节点则为`None`。
可以使用递归函数实现求一个节点的所有左孩子:
```python
def get_all_left_children(node):
if not node:
return []
left_children = []
if node.left:
left_children.append(node.left.val)
left_children.extend(get_all_left_children(node.left))
return left_children
```
函数的实现思路是,先判断当前节点是否为空,如果为空则返回空列表;如果当前节点有左孩子,则将左孩子的值加入到左孩子列表中,并递归获取左孩子的所有左孩子,将结果合并到左孩子列表中。最后返回左孩子列表即可。
注意,这里假设节点的`left`属性不为`None`时一定存在左孩子,如果存在`None`节点,则需要对函数进行修改。
相关问题
用python用函数求二叉树一个节点的所有左孩子不用考虑是否有左孩子和是否为空结点
假设二叉树的节点定义如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
则可以使用递归函数来求一个节点的所有左孩子:
```python
def get_all_left_children(node):
"""
获取一个节点的所有左孩子
"""
if not node: # 如果节点为空,返回空列表
return []
if not node.left: # 如果节点没有左孩子,返回空列表
return []
res = [] # 用于存放所有左孩子的列表
left = node.left # 获取节点的左孩子
res.append(left.val) # 将左孩子的值加入到结果列表中
res.extend(get_all_left_children(left)) # 递归获取左孩子的所有左孩子,并将结果加入到结果列表中
return res
```
这个函数的实现过程比较简单,递归地获取节点的左孩子,并将左孩子的值加入到结果列表中,最后返回结果列表即可。需要注意的是,在递归的过程中,需要判断节点是否为空和是否有左孩子,否则会出现错误。
用函数求二叉树一个节点的所有左孩子
假设节点的数据结构如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
可以使用递归函数来实现查找一个节点的所有左孩子:
```python
def find_left_children(root, target):
if not root:
return []
if root == target:
return []
if root.left == target:
return [root.left]
left_children = find_left_children(root.left, target)
right_children = find_left_children(root.right, target)
return left_children + right_children
```
这个函数接收两个参数:根节点 `root` 和目标节点 `target`,返回值是一个列表,包含所有目标节点的左孩子。函数首先进行一些边界判断:
- 如果根节点为空,返回一个空列表。
- 如果根节点就是目标节点,返回一个空列表。
- 如果根节点的左孩子就是目标节点,返回一个只包含目标节点的列表。
如果目标节点不是根节点,那么我们需要在根节点的左子树和右子树中分别查找目标节点的左孩子。递归调用 `find_left_children()` 函数即可。最后将两个子树中找到的左孩子合并到一起返回即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)