Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save evgeniyworkbel/46578e1f4de6af1f5608e178c969c8ec to your computer and use it in GitHub Desktop.
Save evgeniyworkbel/46578e1f4de6af1f5608e178c969c8ec to your computer and use it in GitHub Desktop.
Курс: "Введение в ООП" (Хекслет)
В данном испытании мы будем использовать двоичное дерево, и выполнять агрегацию данных.
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
Подсказки
Двоичное дерево https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE
Для реализации каждого из методов потребуется выполнить обход всех узлов дерева.
Вспомните принцип работы метода reduce для массивов. (https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment