【发布时间】:2013-02-22 06:09:38
【问题描述】:
我在 C# 中有一个名为 items 的 List<Leaf>。叶子具有以下属性:
public class Leaf
{
public int ID { get; set; }
public int ParentID { get; set; }
public bool IsFlagged { get; set; }
}
如果 Leaf 设置了 IsFlagged 属性,那么我需要将其从项目集合中删除。此外,我需要删除该 Leaf 实体的所有子级。我试图找出编写这段代码的最优雅的方式。目前,我在一个循环中有一个循环,但它看起来很草率。
有人知道这样做的优雅方法吗?
【问题讨论】:
-
你能告诉我们你到目前为止的代码吗?
-
“叶子实体的孩子”是什么意思?如果它是一片叶子,它不应该没有孩子吗?
-
@SWeko 看来该类的名称不正确。应该叫
Node。 -
对于树节点(叶子或不叶子)存储其父节点而不是子节点的引用是很不寻常的。通常,您将整棵树存储为对根的引用,然后从那里向下移动到叶子。如果你愿意,你可以让它双向,并给每个节点一个指向父节点的指针。顺便提一句。我建议您使用实际的对象引用,而不是 ID。另请注意,在树中,根、叶或内部节点之间通常没有区别。一切都是一个节点。