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

Опредилить, являются ли два дерева зеркально подобнымм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ простые числа в заданном диапазоне http://www.cyberforum.ru/cpp-beginners/thread165936.html
помогите пожалуйста написать программку...я все уже тут посмотрела, никак не могу реализовать её Найти все простые числа заданном диапазоне(не массив), например вводим а=5, в=30 -в этом диапазоне найти простые числа. Использовать только цикл, может условия какие. больше никаких прибамбасов нельзя, не прошли) на С++ очень прошу, уже битый час мучаюсь...
C++ Перенос в начало списка его максимального элемента, а в конец минимальный нужно написать функцию,которая переносит в начало непустого списка L его максимальный элемент а в конец минимальный. http://www.cyberforum.ru/cpp-beginners/thread165935.html
C++ Как передать в функцию двумерный массив указателей на класс?
у меня есть std::vector<Monster*> monsters; Rect *pole; int pacmen_distance; Monster и Rect два класса. я хочу передать их в функцию и там изменять ... я так понимаю что надо передавать на них ссылку .... но не понимаю как мне в функции надо выделить память под
Функция вычисления степени числа (рекурсия) C++
Всем доброго времени суток, сегодня начал осваивать рекурсивные функции, суть понял, написал функцию вычисления степени числа: double stepen(double X, int N) { if (N == 0) return 1; else if (N > 0) return 1 / stepen(X, -N); else return X * stepen(X, N - 1);
C++ VC6.0 или VC9.0 http://www.cyberforum.ru/cpp-beginners/thread165877.html
Лет пять назад изучал VC++6.0, сейчас опять захотел вернуться к этому полезному делу! Имеет ли смысл сразу ставить VC++9.0? И в чём принципиальные отличия!? Ну скажем у меня современное железо, будет ли выигрышь в плане производительности? И если есть возможность в 3 словах о Microsoft NET Framework !?
C++ Составить программу, которая вводит с клавиатуры имя и год рождения лица и выводит на экран "Привет Имя, тебе Р лет:). Буду благодарен. =(( 1. Составить программу, которая вводит с клавиатуры имя и год рождения лица и выводит на экран "Привет Имя, тебе Р лет:). 2. Составить программу для вычисления размера данных различных базовых типов (char, integer, float и т д) подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
15.09.2010, 11:39     Опредилить, являются ли два дерева зеркально подобнымм
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
///////////////////////////////////////////////////////////////////////////////////
//  Есть такое задание: Два бинарных дерева дзеркально подобные, 
//  если либо оба они пустые, либо оба не пустые, и при етом левое поддерево 
//  одного с них подобное правому поддереву другого, и наоборот. 
//  Опредилить, есть ли два дерева дзеркально подобними.
///////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <vector>
 
typedef std::vector<int>  T_inums;
///////////////////////////////////////////////////////////////////////////////////
struct T_node
{
    int      data;
    T_node*  left;
    T_node*  right;
};
///////////////////////////////////////////////////////////////////////////////////
void make_node(T_node*& rp_node, int val)
{
    rp_node         = new T_node;
    rp_node->data   = val;
    rp_node->left   = 0;
    rp_node->right  = 0;
}
///////////////////////////////////////////////////////////////////////////////////
void sort_insert(T_node*& rp_tree, int val)
{   
    if(rp_tree == 0)
    {
        make_node(rp_tree, val);        
    }
    else if(val < rp_tree->data)
    {        
        sort_insert(rp_tree->left, val);
    }
    else
    {
        sort_insert(rp_tree->right, val);
    }
}
///////////////////////////////////////////////////////////////////////////////////
void sort_insert(T_node*&  rp_tree, T_inums  inums)
{
    for(T_inums::const_iterator  it = inums.begin(); it != inums.end(); ++it)
    {
        sort_insert(rp_tree, *it);
    }
}
///////////////////////////////////////////////////////////////////////////////////
void reverse_sort_insert(T_node*&  rp_tree, int val)
{
    if(rp_tree == 0)
    {
        make_node(rp_tree, val);        
    }
    else if(val < rp_tree->data)
    {
        reverse_sort_insert(rp_tree->right, val);
    }
    else
    {
        reverse_sort_insert(rp_tree->left, val);
    }
}
///////////////////////////////////////////////////////////////////////////////////
void reverse_sort_insert(T_node*&  rp_tree, T_inums  inums)
{
    for(T_inums::const_iterator  it = inums.begin(); it != inums.end(); ++it)
    {
        reverse_sort_insert(rp_tree, *it);
    }
}
///////////////////////////////////////////////////////////////////////////////////
bool are_specularly_similar(T_node*  p_treeA, T_node*  p_treeB)
{
    if(p_treeA == 0 && p_treeB == 0)
    {
        return true;
    }
    if(p_treeA == 0 || p_treeB == 0)
    {
        return false;
    }
    if(p_treeA->data != p_treeB->data)
    {
        return false;
    }
    return    are_specularly_similar(p_treeA->left, p_treeB->right)
           && are_specularly_similar(p_treeA->right, p_treeB->left);
 
}
///////////////////////////////////////////////////////////////////////////////////
int main()
{    
    T_inums  inums;
    inums.push_back(2);
    inums.push_back(7);
    inums.push_back(1);
    inums.push_back(8);
    inums.push_back(2);
        
    T_node*  p_tree_l = 0;
    sort_insert(p_tree_l, inums);
    
    T_node*  p_tree_r = 0;
    reverse_sort_insert(p_tree_r, inums);
 
    if(are_specularly_similar(p_tree_l, p_tree_r))    
    {
        std::cout << "Are specularly similar tree_l and tree_r.";
    }
    else
    {
        std::cout << "Are NOT specularly similar tree_l and tree_r.";
    }
 
    std::cout << std::endl;
 
    if(are_specularly_similar(p_tree_l, p_tree_l))    
    {
        std::cout << "Are specularly similar tree_l and tree_l.";
    }
    else
    {
        std::cout << "Are NOT specularly similar tree_l and tree_l.";
    }
 
    std::cout << std::endl;
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru