该表已经从数据库读取完成并加载到内存,并存储在变量 NodeList 中。请实现删除方法: Delete(int TargetID):实现从 NodeList 中删除 Id 为 TargetId 的节点及其所有子节点
时间: 2024-02-16 21:03:25 浏览: 154
删除数据库表中的父节点以及其子节点
4星 · 用户满意度95%
可以使用递归的方式来实现删除操作,具体步骤如下:
1. 遍历 NodeList 中的每个节点,找到 Id 为 TargetId 的节点。
2. 如果找到了目标节点,递归删除它的所有子节点。
3. 在 NodeList 中删除目标节点。
代码实现如下:
```python
class Node:
def __init__(self, id, parent_id):
self.id = id
self.parent_id = parent_id
self.children = []
class NodeList:
def __init__(self, nodes):
self.nodes = nodes
def delete(self, target_id):
for node in self.nodes:
if node.id == target_id: # 找到目标节点
self._delete_subtree(node) # 递归删除目标节点的子树
self.nodes.remove(node) # 删除目标节点
break
def _delete_subtree(self, node):
for child in node.children:
self._delete_subtree(child) # 递归删除子树
self.nodes.remove(node) # 删除节点
```
其中,Node 类表示树节点,有 id、parent_id 和 children 三个属性,表示节点的唯一标识、父节点标识和子节点列表。NodeList 类表示整个树,有 nodes 属性表示节点列表,提供了 delete 方法来删除目标节点及其子节点。
阅读全文