Created
July 14, 2022 18:42
-
-
Save evgeniyworkbel/a20cce24135121d2629e6ab23b65b3f7 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 | |
Двоичное дерево поиска состоит из узлов, каждый из которых содержит значение ключа и два поддерева (левое и правое), которые в свою очередь также являются двоичными деревьями. Правильное дерево не содержит повторяющихся ключей, и для каждого узла гарантируется, что в левом поддереве все значения меньше текущего, а в правом — больше. | |
Двоичное дерево поиска | |
Реализуйте и экспортируйте по умолчанию класс, который реализует представление узла. Конструктор класса принимает на вход значение ключа (число), и двух детей, которые в свою очередь также являются узлами. Дерево может быть создано пустым. | |
Класс должен содержать методы: | |
Геттер getKey() — возвращает ключ. Если дерево пустое, возвращает null. | |
Геттеры getLeft(), getRight() — возвращают соответственно левого и правого ребёнка. Если ребёнок в узле отсутствует, геттер возвращает null. | |
search(key) — выполняет поиск узла в правильном двоичном дереве по ключу и возвращает узел. Если узел не найден, возвращается null. | |
Примеры | |
const tree = new Node(9, | |
new Node(4, | |
new Node(3), | |
new Node(6, | |
new Node(5), | |
new Node(7))), | |
new Node(17, | |
null, | |
new Node(22, | |
new Node(20), | |
null))); | |
const node = tree.search(6); | |
node.getKey(); // 6 | |
node.getLeft().getKey(); // 5 | |
node.getRight().getKey(); // 7 | |
tree.search(35); // null | |
tree.search(3).getLeft(); // null | |
Подсказки | |
Двоичное дерево поиска 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_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment