用childs填充数组的递归函数

时间:2013-03-12 13:26:31

标签: javascript arrays recursion

我在一个javascript项目中,我必须使用canvas绘制一棵树。像这样:http://en.wikipedia.org/wiki/Binary_search_tree#Types

每个节点代表我项目中的一个窗口,每个子节点都是前一个节点的子节点。

我确定我必须使用数组,例如:

var node = {
    windowId,
    childs{}
}

也就是说,节点将是根,其id(windowId)和 childs {} 是另一个具有相同结构的数组。

例如:

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

我正在创建一个递归函数,但我几乎什么都没有...你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果每个节点都可以成为顶级节点,那么您所要做的就是找出一个始终允许子节点的结构。扩展您的示例,将每个子列表都设置为数组非常容易。

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

对于其余部分,将当前对象存储在变量中,然后遍历每个叶子并添加相应的缩进。如果你做得对,你可以有一个绘图功能,并根据需要多次调用它;你只需要跟踪水平。