Построение бинарного дерева из многомерного массива.

Входной массив имеет следующий формат: [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 пропускает рекламу и многое другое
Мотивационная цитата на новой вкладке
Удалить ненужные элементы
Тревожная закладка