Как заполнить бинарное дерево чтобы оно не было деревом поиска? - C (СИ)
Формулировка задачи:
Здесь я хочу сделать так чтобы число в зависимости от случайного temp отправлялось налево или направо, НО у меня происходит утечка памяти и на выходе я получаю меньшее количество элементов чем необходимо, кто знает подскажите пожалуйста как исправить ну или какой ещё есть способ
void fillTree(Tree* const root, int n) {
for (int i = 0; i < n; i++) {
Tree* item = new Tree;
item->Data = rand() % 100;
item->Left = nullptr;
item->Right = nullptr;
Tree* cur = root;
Tree* prev = nullptr;
while (cur) {
int temp = rand() % 100;
if (cur->Data != item->Data) {
if (temp % 2 == 0) {
prev = cur;
cur = cur->Right;
}
else {
prev = cur;
cur = cur->Left;
}
}
else {
prev = cur;
cur = cur->Right;
needed = true;
}
}
if (prev->Data < item->Data)
prev->Right = item;
else
prev->Left = item;
}
}Решение задачи: «Как заполнить бинарное дерево чтобы оно не было деревом поиска?»
textual
Листинг программы
if ( rand() & 1) // пихать вправо else // пихать влево