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