Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка слов по алфавиту http://www.cyberforum.ru/cpp-beginners/thread955713.html
Всем привет, помогите мне пожалуйста с сортировкой слов по алфавиту, словом считают группу символов между двумя пробелами. Упорядочить слова по алфавиту #include <cstdio> #include <clocale> #include <cmath> #include <string> #include<conio.h> #include<iostream>
C++ NDEBUG "С++ позволяет программисту "удалить" проверки в окончательной версии программы, просто определив директивой #define" константу NDEBUG. Это приведет к тому, что препроцессор превратит все вызовы assert() в модуле в ничего не делающие команды". Попробовал так (код ниже), но не работает. Как правильно реализовать? #define NDEBUG int _tmain(int argc, _TCHAR* argv) { int x = 10; assert (x <... http://www.cyberforum.ru/cpp-beginners/thread955712.html
C++ Как возвратить несколько значений в функции?
Функция, реализующая обобщенный алгоритм Евклида. Нужно вернуть 3 значения: gcd, x и y. То есть нужно возвратить значения массива U. Подскажите как это лучше сделать? __int64 Low2(__int64 a, __int64 b) { if (a<0 || b<0) printf("\nUslovie ne vipolneno. Zadaite a ili b zanovo"); else { if (a<b) { int z;
Переписать программу из паскаля в с++ C++
Уважаемые форумчане!! Помогите пожалуйста переписать программу из паскаля в с++. uses crt; Var A, B, C, D, X, X1, X2 : Real; Begin Writeln ('Введите коэффициенты уравнения (A, B, C) '); readln(a,b,c); If A=0 Then If B=0 Then If C=0 Then Writeln('X - любое число')
C++ Выполните арифметические операции сложения, вычитания «машинным» методом http://www.cyberforum.ru/cpp-beginners/thread955660.html
Уважаемый форум! Помогите пожалуйста.Что-то я совсем запуталась. Может кто-то знает, как решить поставленную задачу? Выполните арифметические операции сложения, вычитания «машинным» методом, используя в качестве операндов числа А= -0,00111 В= -0,11110 (операции выполнить в дополнительном коде)!!! Очень прошу о помощи, а то что-то я запуталась...
C++ Быстрая сортировка Помогите пожалуйста, при использовании алгоритма быстрой сортировки, конечный массив получается не отсортированным, хотя все операции проходят и при этом с правильными индексами. Сортировка производится с 44 по 49. #include <vector.h> #include <stdlib.h> #include <stdio.h> #include <math.h> using namespace std; подробнее

Показать сообщение отдельно
ya_noob
_
201 / 145 / 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], либо добавь в структуру пару дополнительных ссылок, либо параллельно с обходом дерева создавай новую структуры (что более логично) (получится, что бинарное дерево формируется в порядке правый->левый->корень, т.е. в соответствии с обратным обходом дерева)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru