我在一个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{}
}
}
.
.
.
我正在创建一个递归函数,但我几乎什么都没有...你能帮助我吗?
答案 0 :(得分:0)
如果每个节点都可以成为顶级节点,那么您所要做的就是找出一个始终允许子节点的结构。扩展您的示例,将每个子列表都设置为数组非常容易。
{
id: 0,
childs: [
{
id: 0.1,
childs: [ ... ]
},
{
id: 0.2,
childs: [ ... ]
},
...
]
}
对于其余部分,将当前对象存储在变量中,然后遍历每个叶子并添加相应的缩进。如果你做得对,你可以有一个绘图功能,并根据需要多次调用它;你只需要跟踪水平。