Sobes.tech
Back to tasks
Junior — Senior
54

Подсчёт суммарного значения всех узлов бинарного дерева

Companies where asked:

СБЕРСБЕР
Get help with live coding in real time with Sobes Copilot
Task condition

Дана структура бинарного дерева, где каждый узел хранит числовое значение и может иметь левый и правый потомки. Необходимо реализовать функцию, которая рекурсивно проходит по всем узлам и возвращает сумму их значений. Пример реализации на TypeScript:

interface ITree {
  value: number;
  left?: ITree;
  right?: ITree;
}

const tree: ITree = {
  left: {
    left: {
      left: {
        right: {
          left: {
            value: 7,
          },
          right: {
            value: 14,
          },
          value: 66,
        },
        value: 23,
      },
      value: 90,
    },
    right: {
      value: 67,
    },
    value: 34,
  },
  right: {
    value: 11,
  },
  value: 16,
};

function treeValueSum(tree: ITree) {
  let sum = tree.value;

  if (tree.left) {
    sum += treeValueSum(tree.left);
  }

  if (tree.right) {
    sum += treeValueSum(tree.right);
  }

  return sum;
}

console.log(treeValueSum(tree));
console.log(treeValueSum(tree) === 328);