У меня возникла эта проблема с реализацией вставки двоичного дерева поиска. Теперь я попробовал это как с рекурсивным методом, так и с итеративным. Способ, который я получил до сих пор, «в порядке в лучшем случае», поскольку для дерева размером = 31609 и высоты дерева = 35 вставка занимает около 100 секунд, и предполагается, что WAAAAAAY опустится примерно на одну секунду. Может кто-нибудь, пожалуйста, дайте мне подсказку, что я могу делать неправильно?Java двоичное дерево поиска - вставка реализации
Вот код того, что мне удалось сделать до сих пор (вставка без дубликатов):
void insert(int val){
if(this.elem < val){
if(this.right != null){
this.right.insert(val);
}
else{
nodes++;
this.right = new Node(val);
}
}
else if(this.elem > val){
if(this.left != null){
this.left.insert(val);
}
else{
nodes++;
this.left = new Node(val);
}
}
else {
return;
}
}
Я сомневаюсь, что проблема находится в самом «вставке». Можете ли вы предоставить информацию о конструкторе? –
Конструктор действительно базовый: частный узел (int elem) {this.elem = elem;} – drBet
и что означает 'nodes ++'? Сохраняете ли вы размер дерева на каждом узле? –