Форум программистов, компьютерный форум 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...
C++ VC6.0 или VC9.0 http://www.cyberforum.ru/cpp-beginners/thread165877.html
Лет пять назад изучал VC++6.0, сейчас опять захотел вернуться к этому полезному делу! Имеет ли смысл сразу ставить VC++9.0? И в чём принципиальные отличия!? Ну скажем у меня современное железо, будет...
C++ Составить программу, которая вводит с клавиатуры имя и год рождения лица и выводит на экран "Привет Имя, тебе Р лет:). Буду благодарен. =(( 1. Составить программу, которая вводит с клавиатуры имя и год рождения лица и выводит на экран "Привет Имя, тебе Р лет:). 2. Составить программу для вычисления размера данных... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3049 / 1694 / 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;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru