我有一个数据构造与JavaScript中的父节点和子节点的关系,如下所示:
var data = {
'name': 'A1',
'children': [
{
'name': 'B1',
'children': [
{'name': 'C1'},
{'name': 'C2'},
{'name': 'C3'},
{'name': 'C4'},
{'name': 'C5'}
]
},
{
'name': 'B2',
'children': [
{
'name': 'C6',
'children': [
{'name': 'D1'}
]
},
{'name': 'C7'},
{'name': 'C8'}
]
}
]
};
我需要做的是用拓扑计算每个子节点的坐标。最终的结果大概是这样的——拓扑树:
┌─────────────────────────────────
│ ┌C1[2,0]
│ │C2[2,1]
│ ┌B1[1,2]─┼C3[2,2]
│ │ │C4[2,3]
│A1[0,4]┤ └C5[2,4]
│ │ ┌C6[2,5]─D1[3,5]
│ └B2[1,6]─┼C7[2,6]
│ └C8[2,7]
当然,该算法可以兼容各种情况,比如如果最终节点的子节点过多,则每个父节点的 Y 坐标都会加上一个偏移量。
这是拓扑树的演示:http: //mbostock.github.com/d3/talk/20111018/tree.html
但是,我只想用 JavaScript 代码的核心来计算上面的坐标。任何想法?或者,也许您可以使用其他语言来实现它。
非常感谢!