2

我有一个数据构造与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 代码的核心来计算上面的坐标。任何想法?或者,也许您可​​以使用其他语言来实现它。

非常感谢!

4

0 回答 0