Форум программистов, компьютерный форум, киберфорум
Наши страницы

Создать бинарное дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка слов по алфавиту http://www.cyberforum.ru/cpp-beginners/thread955713.html
Всем привет, помогите мне пожалуйста с сортировкой слов по алфавиту, словом считают группу символов между двумя пробелами. Упорядочить слова по алфавиту #include <cstdio> #include <clocale>...
C++ NDEBUG "С++ позволяет программисту "удалить" проверки в окончательной версии программы, просто определив директивой #define" константу NDEBUG. Это приведет к тому, что препроцессор превратит все вызовы... http://www.cyberforum.ru/cpp-beginners/thread955712.html
C++ Как возвратить несколько значений в функции?
Функция, реализующая обобщенный алгоритм Евклида. Нужно вернуть 3 значения: gcd, x и y. То есть нужно возвратить значения массива U. Подскажите как это лучше сделать? __int64 Low2(__int64 a,...
Переписать программу из паскаля в с++ C++
Уважаемые форумчане!! Помогите пожалуйста переписать программу из паскаля в с++. uses crt; Var A, B, C, D, X, X1, X2 : Real; Begin Writeln ('Введите коэффициенты уравнения (A, B, C) ');...
C++ Выполните арифметические операции сложения, вычитания «машинным» методом http://www.cyberforum.ru/cpp-beginners/thread955660.html
Уважаемый форум! Помогите пожалуйста.Что-то я совсем запуталась. Может кто-то знает, как решить поставленную задачу? Выполните арифметические операции сложения, вычитания «машинным» методом,...
C++ Быстрая сортировка Помогите пожалуйста, при использовании алгоритма быстрой сортировки, конечный массив получается не отсортированным, хотя все операции проходят и при этом с правильными индексами. Сортировка... подробнее

Показать сообщение отдельно
ya_noob
_
202 / 146 / 9
Регистрация: 08.10.2011
Сообщений: 432
16.09.2013, 19:39
Код
функция(текущий узел):
    если нет узла, возвращаем NULL
    link = 0
    для каждого потомка текущего узла справа налево:
        temp = вызываем рекурсивно для него эту функцию
        правая ссылка очередного потомка = link
        link = temp
    левый потомок текущего узла = link
    возвратить ссылку на текущий узел
как видно из алгоритма (если хорошо приглядеться), функция открепляет всех правых потомков каждого узла внутри цикла а его правым потомком становится его ближайший правый брат (последнее действие происходит на один рекурсивный уровень выше) (этот ближайший брат хранится в переменной link). в конце link будет содержать левого потомка, его мы и сделаем (оставим) левым потомком узла

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

кто такие правый и левый потомки реши сам, это может быть Son[0] и Son[1], либо добавь в структуру пару дополнительных ссылок, либо параллельно с обходом дерева создавай новую структуры (что более логично) (получится, что бинарное дерево формируется в порядке правый->левый->корень, т.е. в соответствии с обратным обходом дерева)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru