Constructor
new BinarySearchTree()
Example
const BST = new BinarySearchTree();
BST.insert(11);
BST.insert(5);
BST.insert(4);
BST.insert(5);
BST.insert(12);
BST.insert(6);
Methods
findMinNode(node) → {Node}
Находит узел с минимальным значением в дереве.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | узел, который будем проверять |
Returns:
эземпляр `Node`, содержащий минальное значение
- Type
- Node
inOrderTraverse(node, callback) → {void}
Прямой обход BST.
>При прямом обходе будут посещаться все узлы в порядке возрастания, начиная с указанного узла (хотя это и необязательно),
и выполнять заданную callback функцию (также необязательно).
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | узел, с которого начинается обход дерева |
callback |
function | callback функция |
Returns:
- Type
- void
insert(data) → {void}
Создает экземпляр класса `Node`. И располагает его внутри BST.
Parameters:
Name | Type | Description |
---|---|---|
data |
Number | значение добавляемого узла |
Returns:
- Type
- void
insertNode(node, newNode) → {void}
Размещает узел в нужной позиции BST.
Returns:
- Type
- void
postOrderTraverse(node, callback) → {void}
Обход в обратном порядке.
>При обходе в обратном порядке посещаются узлы после посещения его потомков.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | узел, с которого начинается обход дерева |
callback |
function | callback функция, которая будет выполнена при каждой итерации |
Returns:
- Type
- void
preOrderTraverse(node, callback) → {void}
Симметричный обход.
>При симметричном обходе посещаются каждый узел до его потомков.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | узел, с которого начинается обход дерева |
callback |
function | callback функция, которая будет выполнена при каждой итерации |
Returns:
- Type
- void
remove(data) → {void}
Удаление узла.
Parameters:
Name | Type | Description |
---|---|---|
data |
Number | значение удаляемого узла |
Returns:
- Type
- void
removeLeafNode(node) → {Node}
Удаление крайнего узла (leaf node).
>Крайний узел - узел без дочерних элементов
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | Узел, который собираемся удалить (присвоить `null`) |
Returns:
Обновленное значение узла
- Type
- Node
removeNode(node, data) → {Node|null|*}
Выбор способа удаления.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | элемент, в котором происходит поиск удаляемого узла |
data |
Number | значение узла |
Returns:
- Type
- Node | null | *
removeNodeWithoutLeftChild(node) → {Node}
Удаляет родительский узел, устанавливая вместо него дочерний правый.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | родительский узел |
Returns:
новый родительский узел (бывший дочерний правый)
- Type
- Node
removeNodeWithoutRightChild(node) → {Node}
Удаляет родительский узел, устанавливая вместо него дочерний левый.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | родительский узел |
Returns:
новый родительский узел (бывший дочерний левый)
- Type
- Node
removeNodeWithTwoChildren(node) → {Node}
Удаление узла с двумя потомками.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | удаляемый узел |
Returns:
минимальный дочерний элемент у правого поддерева указанного узла
- Type
- Node
search(node, data) → {Node}
Поиск.
Parameters:
Name | Type | Description |
---|---|---|
node |
Node | Узел, в котором производится поиск |
data |
Number | значение, которое ищем |
Returns:
узел, с указанным значением `data`
- Type
- Node