-1

我在一个 javascript 项目中,我必须使用画布绘制一棵树。像这样: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{}
        }
    }
   .
   .
   .

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

4

1 回答 1

0

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

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

其余的,将当前对象存储在一个变量中,然后遍历每个叶子并添加相应的缩进。如果你做对了,你可以有一个单独的绘图函数,并根据需要多次调用它;您只需要跟踪级别。

于 2013-03-12T13:51:21.807 回答