Построение бинарного дерева из многомерного массива.
Входной массив имеет следующий формат: [root, left_child, right_child]
например [1,[2,4,5], [3,6,7]].
Это может иметь n уровень размерности.
На выходе должно получиться бинарное дерево.
Первое, что нужно решить, это иметь функцию Node Constructor.
function Node (value, left, right){ this.value = value; this.left = left; this.right = right; }
Основная функция будет в основном проверять родительский/корневой узел и его левый и правый дочерние элементы.
Если Left/Right Children является массивом, создайте новый узел, используя Left[0]/Right[0], и рекурсивно вызовите метод с новым массивом Left/Right. Каждый узел будет связан со своим родителем в каждой рекурсии. Например. здесь LeftNode/RightNode будет присоединен к своему родителю.
function convertArrayToNodeBasedBinaryTree(arr, node) { if (!arr || arr.length === 0) { return null; } let parent = node; if (!parent) { parent = new Node(arr[0]); } const left = arr[1] || null; const right = arr[2] || null; let leftNode; let rightNode; if (Array.isArray(left)) { leftNode = new Node(left[0]); } else { leftNode = left ? new Node(left) : null; } if (Array.isArray(right)) { rightNode = new Node(right[0]); } else { rightNode = right ? new Node(right) : null; } parent.left = leftNode; parent.right = rightNode; process(left, leftNode) process(right, rightNode) return parent; }
Несколько расширений Chrome для оформления заказа:
Youtube пропускает рекламу и многое другое
Мотивационная цитата на новой вкладке
Удалить ненужные элементы
Тревожная закладка