2011-03-25 109 views
2

我有一個包含子列表的node1。 這個子列表可以有多個節點,每個節點都有其子列表等等。C#=>遞歸遞歸列表以獲取最後一個元素

nod1 
....Children 
.......node2 
.........Children 
.......node3 
.........Children 
............node4 
............node5 

我需要得到層次結構中最底部和最正確位置上的節點5。

如何使用遞歸方法獲得此節點?

回答

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()); 
} 

節點的最右邊的葉子是遞歸定義爲最後孩子的最右側的葉。基本情況是沒有孩子的節點;在這種情況下,它是最右邊的葉子。

這樣的迭代方法是:

Node rightLeaf = node; 

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

return rightLeaf; 
+0

大...... :)! – msfanboy 2011-03-25 10:51:47