2013-01-23 24 views
1

這是我的場景。我有以下的目的;如何編寫一個遞歸方法來檢查這種情況?

public class MyTemplate{ 

private MyTemplate[]childTemplates; 
} 

現在在相同類中我有保持相同的對象,其在這種情況下是一個模板的子元素的數組。我需要的是能夠遍歷這些元素中的每個元素和元素,因爲這可以像樹結構一樣。我目前無法想象一種能夠涵蓋元素內每個孩子元素的方式。

感激,如果任何人都可以直接我在正確的方向。

回答

6

喜歡這個?

public class MyTemplate 
{ 
    private MyTemplate[] childTemplates; 

    void iterate() 
    { 
    // do something with this 
    for (MyTemplate template: childTemplates) 
     template.iterate(); 
    } 
} 
+0

每個模板本身都可以有自己的孩子,如此下去。我如何遍歷每個分支和支行? – dinukadev

+2

他已經這麼做了,看看遞歸調用。 – Swapnil

+0

哦,是的。對不起,今天有一個延遲的日子:D。 Thx很多的幫助。這像一個魅力。遞歸方法總是讓我感到困惑:)。乾杯 – dinukadev

1

您還可以使用每個模板進行處理:

public class MyTemplate 
{ 
    private MyTemplate[] childTemplates; 

    void iterate() 
    { 
    preProcess(); 
    for (MyTemplate template: childTemplates) 
     template.iterate(); 
    postProcess(); 
    } 

    void preProcess() 
    { 
    // do something before iterating through the children 
    } 

    void postProcess() 
    { 
    // do something afterwards 
    } 

} 
+0

謝謝,這也可以。欣賞時間爲答案。 – dinukadev

1

試試這個:

public traverse() { 
    if(children == null || children.size == 0) { 
     return; 
    } 
    for(i = 0; i < children.size; i++) { 
     children[i].doSomething(); 
     children[i].traverse(); 
    } 
} 
+0

Thx幫助埃米爾。特別是處理空方案的部分。 – dinukadev

相關問題