用函数求二叉树一个节点的所有左孩子
时间: 2024-05-03 08:18:16 浏览: 10
假设节点的数据结构如下:
```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()` 函数即可。最后将两个子树中找到的左孩子合并到一起返回即可。