2013-03-12 82 views
-1

我在javascript項目中,並且必須使用畫布繪製一棵樹。像這樣:http://en.wikipedia.org/wiki/Binary_search_tree#Types使用子對象填充數組的遞歸函數

每個節點代表我的項目中的一個窗口,每個子節點都是前一個節點的子節點。

我確信我必須使用一個陣列,如:

var node = { 
    windowId, 
    childs{} 
} 

即,節點將是根,具有其ID(WINDOWID)和兒童的{}是另一個數組那將具有相同的結構。

例如:

var node = { 
     windowId, 
     childs{ 
      windowId //windowId of the child 
      childs{} 
     } 
    } 
    . 
    . 
    . 

我創建一個遞歸函數,但我還沒有幾乎沒有......你能幫助我嗎?

+2

您應該先學習JavaScript語法。使節點對象的'childs'屬性成爲其他節點對象的'Array'。並且請向我們展示您提供的代碼,這並不複雜(並且鏈接的維基百科文章中有示例代碼) – Bergi 2013-03-12 13:30:24

+1

對不起,但我在這裏沒有看到問題。我們不打算爲您設計,但如果您制定了具體的問題,我們可以提供幫助。 – 2013-03-12 13:31:16

回答

0

如果每個節點都可以變成頂級,那麼你所要做的就是找出一個總是允許孩子的結構。擴展你的例子,將每個childs列表作爲一個數組很容易。

{ 
    id: 0, 
    childs: [ 
     { 
     id: 0.1, 
     childs: [ ... ] 
     }, 
     { 
     id: 0.2, 
     childs: [ ... ] 
     }, 
     ... 
    ] 
} 

其餘的,將當前對象存儲在變量中,然後遍歷每個葉子並添加相應的縮進。如果你做得對,你可以有一個抽獎功能,並根據需要多次調用;你只需要跟蹤水平。

+0

非常感謝Andrei。也許我的問題不是很具描述性,但是因爲我知道你不能爲我工作......我只是在尋找一條軌道。謝謝。 – 2013-03-12 13:54:43