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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ проверить http://www.cyberforum.ru/cpp-beginners/thread221790.html
проверить,существует ли в массиве хоть одна пара одинаковых элементов.
C++ не понимаю. строки. значит надо написать программу., преобразующую введенный текст по Госту т е 1 буква заглавная, после запятой 1 пробел, между словами 1 пробел и т.д. Упорядочить слова по алфавиту Упорядочить по... http://www.cyberforum.ru/cpp-beginners/thread221785.html
C++ Показательное уравнение в с++, процедуры и функции
Вобщем у меня есть задание. Подскажите, с чего начать его делать. У меня пока совершенно никаких иде на этот счёт. Задание во вложении, не знаю как другим способом его здесь разместить.
срочно экзамен C++
задача прошу решить плз=) требование 1)подготовить текстовый файл с входными даннми в редактре 2)разбить программу на функции ввода обработк и вывода 3)входные данны прочитать из файла(с\\темп\)...
C++ срочно!!контрольная http://www.cyberforum.ru/cpp-beginners/thread221768.html
В одномерном масиве заменить все отрицательные значения на макс
C++ После последней буквы каждого слова вставить точку помогите пожалуйста!!!!! очень нужно сегодня!!!!!!!! Работа со строками. Разработать программы для двух задач. Для задач a), b), 1) и 2) исходные данные (текст) – строка символов. Ввод и... подробнее

Показать сообщение отдельно
patriot2008
72 / 72 / 4
Регистрация: 04.12.2008
Сообщений: 463

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

28.12.2010, 14:45. Просмотров 4142. Ответов 3
Метки (Все метки)

Имеется бинарное дерево типа
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;
    }
}
Так вот: проблема вся в том, что метод копирования дерева корректно не работает. Теоретически все вроде верно, находил кучу алгоритмов и примеров решения, все сходится. Но на самом деле - не создает копию дерева. Прогонял через отладчик - тоже ничего не нашел. В чем может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru