Двоичное дерево из общего дерева

У меня есть древовидная структура, в которой есть узел с родительским идентификатором (неограниченное количество дочерних узлов). Для отображения мне нужна эта древовидная структура в виде двоичного дерева. Как я это делаю, на каждом уровне узлы сгруппированы в один узел в зависимости от условия. Когда узел выбран, отображаются его дочерние элементы. Пример:

N-Ary tree

Зеленый цвет означает, что условие истинно , а красный - ложное.

BTree

B, C сгруппированы в левый узел, а D, E находятся справа в зависимости от их условия.

ВОПРОС: Я использую KnockoutJS для отображения своего дерева, и мне нужно иметь возможность выполнять обычные операции с деревом, такие как получение узла на основе его идентификатора, вставка узла (ов) с удалением узла (ов). Это структура, которая у меня есть. Есть ли лучшая структура / способ сделать это?

var tree = [
    { groupNodeId: "A", childNodes: [
        { nodeId: "A", childGroupNodes: [
            { groupNodeId: "B", condition: true, childNodes: [
                { nodeId: "B", childGroupNodes: []},
                { nodeId: "C", childGroupNodes: []}
            ]},
            { groupNodeId: "D", condition: false, childNodes: [
                { nodeId: "D", childGroupNodes: []},
                { nodeId: "E", childGroupNodes: []}
            ]}
        ]}
    ]}
];
5
задан Ryan 3 January 2012 в 14:07
поделиться