C#=>递归地向下走一个包含列表的列表以获取最后一个元素

msf*_*boy 2 c# recursion

我有一个带有子列表的node1.此子列表可以有多个节点,每个节点都有其子列表,依此类推.

nod1
....Children
.......node2
.........Children
.......node3
.........Children
............node4
............node5
Run Code Online (Sandbox Code Playgroud)

我需要得到位于层次结构中最底部和最右边位置的节点5.

如何使用递归方法获取此节点?

Ani*_*Ani 6

好吧,既然你要求一个递归方法,你可以这样做:

public static Node GetRightMostLeaf(Node node)
{
    // Argument-checking omitted. You should possibly make this 
    // an instance-method on Node anyway.       

    return !node.Children.Any() ? node : GetRightMostLeaf(node.Children.Last()); 
}
Run Code Online (Sandbox Code Playgroud)

节点的最右边的叶子被递归地定义为其最后一个子节点的最右边的叶子.基本情况是没有孩子的节点; 在这种情况下,它是最右边的叶子.

这样做的迭代方法是:

Node rightLeaf = node;

while(rightLeaf.Children.Any())
{
   rightLeaf = rightLeaf.Children.Last();
}

return rightLeaf;
Run Code Online (Sandbox Code Playgroud)