【发布时间】:2017-08-21 15:55:21
【问题描述】:
我有一组具有父子关系的自定义节点。每个节点可以是复合类型(其中包含其他子节点)或简单类型(叶级节点)
我想写一个函数,它会给我所有死节点的列表。 例如这里是节点集合
基于上述情况,p2、p3、p8、p9、p10、p6、c1 是死节点(因为在它们的层次结构中它们没有任何简单的节点)
我需要一个函数
private List<NodeEntity> GetDeadNodes(List<NodeEntity> originalList)
这里是具有原始列表的函数
private List<NodeEntity> GetOriginalList()
{
var list = new List<NodeEntity>()
{
new NodeEntity() {Code = "P1", ParentCode = "001", Type = NodeType.Composite},
new NodeEntity() {Code = "C1", ParentCode = "001", Type = NodeType.Composite},
new NodeEntity() {Code = "P2", ParentCode = "P1", Type = NodeType.Composite},
new NodeEntity() {Code = "P3", ParentCode = "P2", Type = NodeType.Composite},
new NodeEntity() {Code = "P8", ParentCode = "P3", Type = NodeType.Composite},
new NodeEntity() {Code = "P9", ParentCode = "P3", Type = NodeType.Composite},
new NodeEntity() {Code = "P4", ParentCode = "P1", Type = NodeType.Composite},
new NodeEntity() {Code = "L3", ParentCode = "P1", Type = NodeType.Simple},
new NodeEntity() {Code = "P6", ParentCode = "P1", Type = NodeType.Composite},
new NodeEntity() {Code = "P10", ParentCode = "P4", Type = NodeType.Composite},
new NodeEntity() {Code = "L2", ParentCode = "P4", Type = NodeType.Simple},
new NodeEntity() {Code = "P5", ParentCode = "P4", Type = NodeType.Composite},
new NodeEntity() {Code = "L1", ParentCode = "P5", Type = NodeType.Simple}
};
return list;
}
【问题讨论】:
-
p1、p4、p6、L3、c1是同级的吗?
-
你试过什么?树加递归深度优先搜索?从简单节点开始访问的节点队列?有什么事吗?
-
查看我的图片附件。 p6、p4、L3 是 p1 的孩子。 c1 和 p1 处于同一级别,是 001 的子级
-
...和 p2?他们的位置有点让我失望。
-
p2 是 p1 的子节点