Проблема
Я пытаюсь лучше изучить теорию дерева, я могу добавить один или несколько узлов без проблем, но я заметил, что если я попыталсязапустить функцию множественного добавления без передачи параметра, просто это не работает.Не могли бы вы объяснить, где моя ошибка?
Код
BinarySearchTree.prototype.makeNode = function(value) {
var node = {};
node.value = value;
node.left = null;
node.right = null;
return node;
};
BinarySearchTree.prototype.add = function(value) {
var currentNode = this.makeNode(value);
if (!this.root) {
this.root = currentNode;
} else {
this.insert(currentNode);
}
return this;
};
BinarySearchTree.prototype.insert = function(currentNode) {
var value = currentNode.value;
var traverse = function(node) {
if (value > node.value) {
if (!node.right) {
node.right = currentNode;
return;
} else traverse(node.right);
} else if (value < node.value) {
if (!node.left) {
node.left = currentNode;
return;
} else traverse(node.left);
}
};
traverse(this.root);
};
Теперь, если я попытаюсь
var bst = new BinarySearchTree();
bst.add(3).add(2);
console.log(bst);
, у меня будет это console.log
![enter image description here](https://i.stack.imgur.com/VOd8y.png)
, если я пытаюсь передать неопределенное значение
var bst = new BinarySearchTree();
bst.add().add(2);
console.log(bst);
![console.log](https://i.stack.imgur.com/aRIOg.png)
Ожидание
Я ожидаю, что последний файл console.log не потерял значение 2.
.я прочитал этот пост, чтобы лучше понять, что если я не передал значение функции
Что произойдет, если я не передам параметр в функцию Javascript? и другие сообщения (как переполнение среды и стека) и руководство, связанное с теорией дерева, но я не нашел никакого решения
РЕШЕНИЕ
Благодаря рекомендациии исправление @Nina Scholz я просто добавил эту строку в эту функцию
BinarySearchTree.prototype.add = function(value) {
if (typeof value == 'undefined') {
value = null;
}
var currentNode = this.makeNode(value);
if (!this.root) {
this.root = currentNode;
console.log('sei qui')
} else {
this.insert(currentNode);
}
return this;
};