Основные BST Вопрос от начинающего программиста

голоса
0

Учитывая, что набор данных (8, 1, 6, 9, 3, 5, 4, 7) Я сделал следующее дерево двоичного поиска:

   8
  / \
  1  9
   \ 
    6
   / \ 
  3   7
   \ 
    5
   /
  4

Мой вопрос, если я хотел, чтобы удалить корневой узел (8) из этого дерева, как бы я это сделать, и что будет в результате древовидная структура выглядит? Большое спасибо за любую помощь!

Задан 30/03/2011 в 04:29
источник пользователем
На других языках...                            


2 ответов

голоса
1

вам нужно будет продвигать либо узел из левого поддерева или правое поддерево. Вы можете сделать это произвольно, или еще лучше, способствуют из самого глубокого дерева.

Если продвижение от левого дерева к югу, найти лист, перейдя прямо всегда, начиная с левой substree. Отрежьте этот лист с дерева, и положить его в качестве нового корня.

Аналогичным образом, если продвижение с правом поддереве дерева, найти лист, перейдя слева всегда, начиная с правого поддерева. Отрежьте этот лист с дерева, и положить его в качестве нового корня.

Ответил 30/03/2011 в 04:38
источник пользователем

голоса
-2
            1
             \
              6
            /  \
           3    9 
            \  /
             5 7
            /
           4   

Дерево будет выглядеть, как показано выше. Лучше всего было бы восстановить дерево, с нуля, а не имея некоторую логику, чтобы переместить листы и усложняют процесс.

Ответил 30/03/2011 в 06:51
источник пользователем

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