该表已经从数据库读取完成并加载到内存,并存储在变量 NodeList 中。请实现删除方法: Delete(int TargetID):实现从 NodeList 中删除 Id 为 TargetId 的节点及其所有子节点。
时间: 2024-02-17 13:00:34 浏览: 68
SQL Server删除表及删除表中数据的方法
好的,以下是 Delete(int TargetID) 方法的实现示例:
```csharp
public void Delete(int TargetID)
{
// 找到目标节点
Node targetNode = FindNode(TargetID);
if (targetNode == null)
{
// 目标节点不存在,直接返回
return;
}
// 删除目标节点及其所有子节点
DeleteNode(targetNode);
}
// 递归删除节点及其所有子节点
private void DeleteNode(Node node)
{
// 删除子节点
foreach (Node child in node.Children)
{
DeleteNode(child);
}
// 从父节点的 Children 列表中删除当前节点
if (node.Parent != null)
{
node.Parent.Children.Remove(node);
}
}
```
其中,FindNode(int id) 方法用于从 NodeList 中找到指定 id 的节点,具体实现可以根据你的数据结构进行修改。
需要注意的是,在递归删除子节点时,我们先递归删除子节点,再从父节点的 Children 列表中删除当前节点,这样可以保证删除子节点时不会破坏 NodeList 的结构。
阅读全文