2011-03-10 16 views

回答

1

我假設你在談論Composite design pattern。該模式的通用版本不會讓您直接跳到樹葉,所以您必須遞歸地走孩子。在僞代碼:

stack = [] 
stack.push(rootElement) 
results = [] 

while(stack is not empty) { 
    elt = stack.pop() 
    if (elt.is_leaf()) { 
    results.push(elt) 
    } 
    else { // not a leaf: add children to the stack 
    for (c in elt.children()) { 
     stack.push(c) 
    } 
    } 
} 

在這一點上,你可以訪問的results的77元獲得第77頁,在測得的孩子,你發現了第一個「順序。請記住,一般來說,只要說出'第77葉'是不是很有意義,除非你明確說明你的排序標準是什麼。

+0

@cs學生:我需要更多的細節才能以有意義的方式回答這個問題。也許你可以在原始問題中詳細說明一下(點擊'edit')? – phooji 2011-03-10 02:17:25

+0

@cs學生:根據您的代碼,沒有什麼可以跳出來的。也許是對你的重組問題的一個高層次的回答:如果你有很多對象來「模型」保持跟蹤,並且你希望「視圖」對象保持同步,那麼你可以做幾件事情。一個是做發佈者/訂閱者(一種設計模式)。如果從模型到視圖對象的映射不總是從1到1,這很好,因爲你可以讓多個視圖對象監聽同一個模型對象。如果映射*爲* 1到1,那麼沒有理由不僅僅是'擴展'Swing類並實現'視圖'和'模型'行爲。 – phooji 2011-03-10 02:54:56

相關問題