在treenode级别将按升序增加我想写一个函数,以便它会反转树的级别我知道我应该得到树的深度然后计算
depth-selectednodeLevel
这样它将导致树级别降序
我不知道如何获得树的深度,属性LastNode
将给出节点的最后一个子节点而我不会将它用于深度,因为它将返回仅为该级别的lastNode而不是较低的。
例如通常的treenodes级别如下
|0|
|
|1|
|
|2|
|
|3|
我想成功
|3|
|
|2|
|
|1|
|
|0|
答案 0 :(得分:0)
似乎你需要解决的问题就是找到树的深度,所以要做到这一点就可以使用简单的递归。
伪代码:
int GetDepth(Node node)
{
return node.HasChilds ? node.Childs.Max(GetDepth) : node.Level;
}
在C#中,假设您使用TreeNode类来表示节点:
public int GetDepth(TreeNode node)
{
return node.Nodes.Count == 0
? node.Level
: node.Nodes.Cast<TreeNode>().Select(this.GetDepth).Max();
}
用法:
var depth = GetDepth(myTree.Root);
如果您没有每个节点的Level属性,您只需添加如下参数:
public int GetDepth(TreeNode node, int depth)
{
return node.Nodes.Count == 0
? depth
: node.Nodes.Cast<TreeNode>()
.Select(x => this.GetDepth(x, depth + 1)).Max();
}
用法:
var depth = GetDepth(myTree.Root, 0);