Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save evgeniyworkbel/a20cce24135121d2629e6ab23b65b3f7 to your computer and use it in GitHub Desktop.
Save evgeniyworkbel/a20cce24135121d2629e6ab23b65b3f7 to your computer and use it in GitHub Desktop.
Курс: "Введение в ООП" (Хекслет)
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