Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Почти пропорциональное бинарное дерево


Автор: StargazerV 8.4.2008, 23:17
Постараюсь поподробнее описать проблему - 
Почти пропорциональное бинарное дерево должно выполнять одно из следующих условий:
1. Дерево пустое.
2. У корня только один отросток глубиной не более 0 (т.е. дерево только с одним перекрестком).
3. У корня есть одни отросток с глубиной 0 и второй с глубиной максимум 1 (он пожет быть пустым).
4. У корня один отросток имеет глубину n>0, а второй отросток имеет глубину не более 2*n.

На картинке примеры для 2, 3 и 4 случаев (первый пустой думаю ясен)
user posted image

И вот вопрос - мне нужно написать функцию, которая сможет найти самое большое подобное под-дерево в большом дереве. Если будет найдено 2 или более таких деревьев с одинаковым размером, то предпочтение отдаётся первому найденому.

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

Буду очень признателен за помощь!

Автор: t_gran 9.4.2008, 04:43
http://www.structur.h1.ru/avl.htm рассмотрена эта тема, правда код на pasca-кале, но я думаю поможет.
А http://khpi-iip.mipk.kharkiv.edu/library/datastr/book_sod/kgsu/din_0071.html уже код на C++.
Доступная инфа ещё http://www.rsdn.ru/article/alg/bintree/avl.xml и http://www.delphihelp.org/avl_trees.html (+ в обоих примеры кодов на C++).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)