2013-03-12 81 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