Как суммировать левые узлы из двоичного дерева javascript

#javascript #arrays #binary-tree

#язык JavaScript #массивы #двоичное дерево

Вопрос:

У меня есть двоичное дерево, и я хочу суммировать все самые левые узлы. Так

 2  /   7 5  /  /   2 6 9   

Взяв это дерево, я хочу, чтобы результат был 11, потому что я хочу подвести итог 2 7 2.

Поэтому я попытался сделать это так:

 function leftmostNodesSum(array) {  let sum = 0;  let currentNode = array[0];  let previousNode;  for (let i = 0; i lt; array.length; i  ) {  if (i === currentNode * 2   1) {  previousNode = currentNode;  currentNode = array[i];  sum  = previousNode;  }  }  return sum; }  

Я должен сказать, что у меня есть массив в формате «сначала по ширине», поэтому мой первый узел имеет индекс 0 в моем массиве, а левые узлы равны 2n 1. Массив выглядит так: [2, 7, 5, 2, 6, 0, 9] Число 0 представляет собой пустой узел.

Я вроде как новичок в этом, так что был бы признателен вам за помощь, есть идеи?

Ответ №1:

 function leftmostNodesSum(array) {  let sum = 0;  let currentNode = 0;  for (let i = 0; i lt; array.length; i  ) {   if (i === currentNode) {   sum  = array[i];  currentNode = 2 * i   1;  }    }  return sum; }