Created
July 14, 2022 18:46
-
-
Save evgeniyworkbel/46578e1f4de6af1f5608e178c969c8ec to your computer and use it in GitHub Desktop.
Курс: "Введение в ООП" (Хекслет)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
В данном испытании мы будем использовать двоичное дерево, и выполнять агрегацию данных. | |
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