Javascript: Агрегация в двоичном дереве

JS: Введение в ООП 15 сообщений
Обновлено: 14 сент., 19:08
383
Студента
86%
Завершения

В данном испытании мы будем использовать двоичное дерево, и выполнять агрегацию данных.

Node.js

Реализуйте следующие методы в классе:

  • getCount() — возвращает количество узлов в дереве.
  • getSum() — возвращает сумму всех ключей дерева.
  • toArray() — возвращает одномерный массив содержащий все ключи.
  • toString() — возвращает строковое представление дерева.
  • every(fn) — проверяет, удовлетворяют ли все ключи дерева условию, заданному в передаваемой функции.
  • some(fn) - проверяет, удовлетворяет ли какой-либо ключ дерева условию, заданному в передаваемой функции.

При обходе дерева нужно использовать порядок слева-направо. То есть вначале обрабатываем ключ узла, затем ключ левого ребёнка, после чего ключ правого ребёнка.

Примеры

const tree = new Node(9,
  new Node(4,
    new Node(8),
    new Node(6,
      new Node(3),
      new Node(7))),
  new Node(17,
    null,
    new Node(22,
      null,
      new Node(20))));

tree.getCount() // 9
tree.getSum(); // 96
tree.toArray(); // [9, 4, 8, 6, 3, 7, 17, 22, 20]
tree.toString(); // '(9, 4, 8, 6, 3, 7, 17, 22, 20)'

tree.every((key) => key <= 22); // true
tree.every((key) => key < 22); // false
tree.some((key) => key < 4); // true
tree.some((key) => key > 22); // false

Подсказки

  • Двоичное дерево
  • Для реализации каждого из методов потребуется выполнить обход всех узлов дерева.
  • Вспомните принцип работы метода reduce для массивов.

Для полного доступа к испытанию нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов