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

Копирование бинарного дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Размер файла http://www.cyberforum.ru/cpp-beginners/thread221220.html
Скрипт, который находит размер всех файлов указанного типа на указанном диске.(можно и 1 файла) вот мне нада узнать размер D:\1.txt
C++ Работа с FMODex Кто работал с этой библиотекой подскажите как получить список всех звуковых входов и выходов звуковой карты (название, тип) и регулировать их баланс? http://www.cyberforum.ru/cpp-beginners/thread221084.html
C++ не могу разобраться..
Вывести на экран все натуральные числа из диапазона от A до B, в записи которых цифра 7 встречается ровно N раз. При отсутствии чисел с указанными свойствами выдать на экран сообщение “Требуемых чисел нет”. Границы диапазона A и B и значение N ввести с клавиатуры Не получается сделать с числом N, не знаю даже как это сделать, чтобы выдавал только такие значения, сколько раз должно...
Класс n-мерных векторов C++
Класс n-мерных векторов Базовый класс (координаты начала и конца вектора Совет: реализовать дополнительный класс NPoint, содержащий в виде массива координаты n-мерных точек, а также количество координат - N) Конструкторы: по умолчанию, с параметрами и копирования. Деструктор. Функции: перегрузки операции сложения; Перегрузка операции вычитания; перегрузки операции умножения на...
C++ Создать абстрактный тип данных http://www.cyberforum.ru/cpp-beginners/thread220902.html
Создать абстрактный тип данных - класс вектор, который имеет указатель на float, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует...
C++ Вычислить произведение матрицы на вектор Пожалуйста помогите сделать эти задачи: 1. Задана матрица {aij} размерности N*N. Из ее элементов сформировать одномерный массив {bk} (k=1, N^2) в следующем порядке: http://www.cyberforum.ru/attachment.php?attachmentid=56161&stc=1&d=1293384216 2. Заданы квадратные матрицы А1,А2,А3,...,Ак и вектора Х1,Х2,...,Хк. Вычислить вектор Z=А1*Х1+А2*Х2+...+Ак*Хк Функции: подробнее

Показать сообщение отдельно
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
28.12.2010, 14:45     Копирование бинарного дерева
Имеется бинарное дерево типа
C++
1
2
3
4
5
6
7
8
9
class TreeNode 
{
public:
    TreeNode(); //конструктор
    virtual ~TreeNode();    //деструктор
    TreeNode  *left;    //указатель на левое поддерево
    TreeNode  *right;   //указатель на правое поддерево
    int data;   //информационное поле
};
Также имеется класс для работы с деревом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class SearchTree
{
public:
    SearchTree();   //конструктор по умолчанию
    ~SearchTree();  //деструктор
    TreeNode* CreateNode(int val);  //создание элемента (листка) дерева
    void Copy(TreeNode*  src, TreeNode* tg);    //копирование одного дерева в другое (функций 
    TreeNode *root; //указатель на корень дерева
};
 
//создание нового элемента дерева
TreeNode* SearchTree::CreateNode(int val)
{
    TreeNode* nd = new TreeNode(val);
    return nd;
}
 
void SearchTree::Copy(TreeNode* src, TreeNode* tg)
{
    if(src == NULL)
        tg = NULL;
    //проход, пока исходное дерево не достигло конца
    if (src != NULL) 
    {
        //создание нового элемента дерева
        tg = CreateNode(src->data);
        if(src->left != NULL)
        {
            Copy(src->left,tg->left);
        }
        else
            tg->left = NULL;
        
        if(src->right != NULL)
        {
            Copy(src->right,tg->right);
        }
        else
            tg->right = NULL;
    }
}
Так вот: проблема вся в том, что метод копирования дерева корректно не работает. Теоретически все вроде верно, находил кучу алгоритмов и примеров решения, все сходится. Но на самом деле - не создает копию дерева. Прогонял через отладчик - тоже ничего не нашел. В чем может быть проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru