如何在拿到一个树遍历的同时,只拿到自己想要的数据,并组装一个新的树。
时间: 2024-05-05 09:16:02 浏览: 48
可以使用递归的方式遍历树,同时在遍历的过程中判断当前节点的数据是否符合自己想要的条件,如果符合则将该节点及其子节点组装成一棵新的树。
具体实现可以参考以下步骤:
1. 定义一个函数,接收一个树节点作为参数,以及一个用于判断是否符合条件的函数。
2. 在函数内部,首先判断当前节点是否符合条件,如果符合则创建一个新的树节点,并将当前节点的数据赋值给新的节点。
3. 遍历当前节点的子节点,对于每一个子节点,递归调用该函数,并将返回的子树节点加入到新的节点中。
4. 返回新的节点,组成一棵新的树。
示例代码如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def build_tree(root: TreeNode, condition_func: callable) -> TreeNode:
if not root:
return None
if condition_func(root.val):
new_root = TreeNode(root.val)
new_root.left = build_tree(root.left, condition_func)
new_root.right = build_tree(root.right, condition_func)
return new_root
else:
left = build_tree(root.left, condition_func)
right = build_tree(root.right, condition_func)
if left:
return left
else:
return right
```
调用示例:
```python
def condition_func(val):
return val % 2 == 1
root = TreeNode(1, TreeNode(2), TreeNode(3, TreeNode(4), TreeNode(5)))
new_root = build_tree(root, condition_func)
# new_root: 1 -> 3 -> 5
```
阅读全文