Как заполнить бинарное дерево чтобы оно не было деревом поиска? - 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
    // пихать влево

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы