Изменения

Перейти к: навигация, поиск

Дерево поиска, наивная реализация

42 байта убрано, 00:14, 16 января 2017
Задачи на поиск максимального BST в заданном двоичном дереве
Введём <tex>\mathtt{v.min}</tex> и <tex>\mathtt{v.max}</tex>, которые будут хранить минимум в левом поддереве вершины и максимум в правом. Тогда мы должны будем проверить, лежит ли ключ вершины <tex>\mathtt{v}</tex> между этими значениями и являются ли поддеревья деревьями поиска. Для пустых вершин минимум и максимум равны <tex> -\infty </tex> и <tex> \infty </tex>.
 
'''Node''' maxroot(Tree[n]: '''Node''') <font color="green">// Tree — заданное двоичное дерево.</font>
'''int''' kol(v: '''Node''')
Рассмотрим каждую вершину дерева, предполагая, что она может быть корнем максимального поддерева поиска. Найдём для каждой из них количество всех вершин, которые могут находиться в таком поддереве. Максимальный из результатов, получаемых на каждом шаге, будем запоминать. Вместе с максимумом будем запоминать и соответствующую ему вершину. После того, как мы обошли всё дерево и нашли корень дерева поиска с наибольшим количеством вершин, при помощи обхода <tex>\mathrm{preorderTraversal}</tex> выводим все вершины на экран.
'''Node''' root(Tree[n]: '''Node''') <font color="green">// Tree — заданное двоичное дерево.</font>
maxdp = -1
maxroot = ''null''
243
правки

Навигация