2017-09-27 49 views
0
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算法檢查最後一個節點樹

什麼是檢查,當我們到達最後一個節點(如圖片)的正確方法。

回答

0

如果你想找到一個沒有孩子的最後一個節點:即找到當前級別的最後一個節點,如果有孩子走得更深否則返回它,那麼你可以很容易地做到這一點:

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

當你沒有一個根節點時,我的方法需要樹的通用情況。您總是可以通過這個節點傳遞一個數組或者編輯該方法來代替一個節點,但如果您有一個沒有根節點的樹,將無法使用它。 –