У меня есть древовидная структура, в которой есть узел с родительским идентификатором (неограниченное количество дочерних узлов). Для отображения мне нужна эта древовидная структура в виде двоичного дерева. Как я это делаю, на каждом уровне узлы сгруппированы в один узел в зависимости от условия. Когда узел выбран, отображаются его дочерние элементы. Пример:
Зеленый цвет означает, что условие истинно
, а красный - ложное.
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: []}
]}
]}
]}
];