我有代表一树一类:从树状结构中删除一个节点
public class Tree
{
public String id { get; set; }
public String text { get; set; }
public List<Tree> item { get; set; }
public string im0 { get; set; }
public string im1 { get; set; }
public string im2 { get; set; }
public String parentId { get; set; }
public Tree()
{
id = "0";
text = "";
item = new List<Tree>();
}
}
而树是这个样子:
tree {Tree} Tree
id "0" string
im0 null string
im1 null string
im2 null string
item Count = 1 System.Collections.Generic.List<Tree>
[0] {Tree} Tree
id "F_1" string
im0 "fC.gif" string
im1 "fO.gif" string
im2 "fC.gif" string
item Count = 12 System.Collections.Generic.List<Tree>
parentId "0" string
text "ok" string
parentId null string
text "" string
我将如何删除ID为节点= someId ?
例如,我将如何删除id =“F_123”的节点? 它的所有孩子也应该被删除。
我有一个方法,在树中搜索给定的ID。我尝试使用该方法,然后将节点设置为null,但它不起作用。
这里是我到现在为止:
//This is the whole tree:
Tree tree = serializer.Deserialize<Tree>(someString);
//this is the tree whose root is the parent of the node I want to delete:
List<Tree> parentTree = Tree.Search("F_123", tree).First().item;
//This is the node I want to delete:
var child = parentTree.First(p => p.id == id);
如何从树上删除子?
theTree.item.Remove(toDelete);只在树的第一级检查。如果我想删除的节点处于第四级,该怎么办? –
OP表示他没有要删除的“Tree”节点,他只有id值。 – Servy
“我有一个方法,在树中搜索给定的ID,我尝试使用该方法,然后将节点设置为空” –