算法检查树中的最后一个节点

时间:2017-09-27 10:45:52

标签: c# algorithm

public void Convert(Node)
{
    StartGrouping();

    DoSomething();

    int childCount = node.GetChildCount();
    for (int i = 0; i < childCount; i++)
    {
        Convert(node.GetChild(i));
    }
    if(last_node)
    {
        EndGrouping();
    }
}

enter image description here

检查我们何时到达最后一个节点的正确方法是什么(如图所示)。

1 个答案:

答案 0 :(得分:0)

如果你想找到没有子节点的最后一个节点:即找到当前级别的最后一个节点,如果它有子节点则更深,否则返回它,那么你可以轻松地做到:

private Node FindLast(Node[] nodes)
{
   var node = nodes.GetLast();
   if (node.HasChildren())
   {
      return FindLast(node.GetChildren());
   }
   return node;
}