DrRacket Удаление корень бинарного дерева поиска

голоса
1

ОБРАТИТЕ ВНИМАНИЕ, ЧТО ЭТО ДОМАШНЯЯ! -> Я не ищу прямые примеры коды, а некоторые нежные массирований моих рассуждений ...

Меня попросили написать функцию, которая удаляет корень двоичного дерева поиска, делая три вещи: я) вращение дерева справа II) удаление корня правого поддерева (который был первоначальным корнем BST) III) восстановление БСТ с новым корнем (который был слева от исходного дерева) и соответствующих перестройками детей этого узла ... Вот что у меня есть:

    (define (rm-root my-bst)
      (list (key (rot-r my-bst)) 
            (left (rot-r my-bst)) 
            (append (right (right (rot-r my-bst))) 
                    (left (right (rot-r my-bst))))))

Но это все замечательно, ожидать, что он не перестраивать дерево с детьми узла, который был «продвигаемых» в корневой узел. Может кто-нибудь помочь мне думать о том, как я должен идти о реализации этого? Следует отметить, что мы определили BST в качестве списков и что функция гниль-р вращает BST вправо. Спасибо.

Задан 12/11/2011 в 01:07
источник пользователем
На других языках...                            


1 ответов

голоса
1

Ну, я не уверен, что это будет полезно 12 дней после того, как был задан вопрос, но здесь идет.

Чтобы было ясно, я предполагаю, что структура данных имеет вид (список ключей влево вправо), где слева и справа также деревья (или пустые, но это не имеет отношения к этому). Если это не так, то было бы необходимо разъяснение этого.

Одна из проблем в коде является то, что вы не хотите, чтобы непосредственно добавить два списка у вас есть вместе с правой стороны. Вы хотите, чтобы сделать список с ключом одного из тех, а затем влево и вправо. Если я правильно читать это, левая функция должна возвращать дерево и, следовательно, должны работать нормально.

Я хотел бы проверить выполнение гнили-р, если я вам, как это, кажется, главная возможность для вещей происходит не так.

Ответил 23/11/2011 в 07:33
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more