Псевдокод нерекурсивна реализации высоты дерева и isBST

голоса
4

Я нахожусь в процессе преобразования рекурсивной функции для BST к не рекурсивному, чтобы помочь подготовиться к интервью. До сих пор я понял, предзаказ, Симметричный, postorder, поиск, удаление, вставка, и преобразование BST кругового связанный список. У меня возникают проблемы, выяснить, как использовать стек или очередь, чтобы получить высоту и найти, если это BST. Любые советы будут с благодарностью. Я не ищу для кода, но логики коды.

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


2 ответов

голоса
5

Для начала, большая работа подготовки к интервью, как это! Я надеюсь, что вы испытываете удовольствие играя с этими алгоритмами.

Давайте начнем с задачей пытаться определить, бинарное дерево является BST. Один из способов сделать это, чтобы сделать заказовМои прогулку дерева и проверить, если элементы находятся в отсортированном порядке. Это будет справедливо, если и только если дерево является BST. Так как у вас уже есть код, чтобы сделать заказовМой прогулки элементов дерева, вы должны иметь возможность легко адаптировать свой код, чтобы проверить элементы, которые выходят из заказовМои прогулки сортируются по отслеживанию последнего элемента, который вы видели в Симметричный ходьбы, а затем сравнивая каждый элемент сгенерированного к предыдущему элементу. Если два вышли из строя, то дерево не BST.

Для того, чтобы определить высоту дерева, один из вариантов были бы взять любой из поисков, которые вы придумали до сих пор (предзаказ, postorder, Симметричный) и отслеживать высоту стопки в каждой точке. Идея заключается в том, что, поскольку ваш стек всегда будет отслеживать пути назад от любого узла до корня, вы можете просто ходить по дереву и записать самое глубокое, что вы когда-либо видели стек стал. Это максимальная глубина, то высота дерева.

Надеюсь это поможет! И удачи с интервью!

Ответил 14/09/2011 в 03:17
источник пользователем

голоса
0

Чтобы найти высоту дерева, вы можете использовать [время O (N)] Моррис обхода].

Для того, чтобы проверить, если он является допустимым BST, сделать заказовМои прогулку дерева. Перемещение элементов в массиве. Проверьте, если массив отсортирован или не для проверки BST.

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

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