Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 36
1

Для каждой вершины бинарного дерева, поменять местами дочерние элементы

20.10.2016, 21:15. Просмотров 523. Ответов 3
Метки нет (Все метки)

Дано бинарное дерево.(заполняется с клавиатуры). Для каждой вершины, имеющей дочернюю, поменять местами дочерние. Меняем только значения.
Нужна помощь. Не очень понятен смысл "дочерние".
Ну и как их менять.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2016, 21:15
Ответы с готовыми решениями:

Для каждой вершины бинарного дерева, поменять местами дочерние элементы
Дано бинарное дерево.(заполняется с клавиатуры). Для каждой вершины, имеющей дочернюю, поменять...

Определить функцию, выполняющую для каждой группы из бинарного дерева вида "РебенокЛевый-Родитель-РебенокПравый" следующее: поменять местами значения
Дана задача: Определить функцию, выполняющую для каждой группы из бинарного дерева вида...

Определить функцию, выполняющую для каждой вершины следу- ющее: поменять местами значения детей
Дано S-ражение, представляющее дерево вида «(Родитель РебенокЛевый Ре- бенокПравый)». Определить...

Поменять местами минимальный и максимальный элемент непустого бинарного дерева
помогите пожалуйста! простая задача - написать процедуру или функцию которая меняет местами...

3
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
29.10.2016, 00:02 2
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
///////////////////////////////////////////////////////////////////////////////
//1.
///////////////////////////////////////////////////////////////////////////////
//Дано бинарное дерево.(заполняется с клавиатуры). Для каждой вершины,
//имеющей дочернюю, поменять местами дочерние. Меняем только значения.
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <memory>
#include <string>
///////////////////////////////////////////////////////////////////////////////
struct  T_node;
///////////////////////////////////////////////////////////////////////////////
typedef std::string                         T_str;
typedef std::shared_ptr     < T_node    >   T_tree;
///////////////////////////////////////////////////////////////////////////////
struct  T_node
{
    //-------------------------------------------------------------------------
    int     val_;
    T_tree  left_;
    T_tree  right_;
    //-------------------------------------------------------------------------
    T_node( int     val )
        :
        val_( val )
    {}
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
void    insert_in_tree
    (
        T_tree  &   tree,
        int         val
    )
{
    if( !tree )
    {
        tree.reset  (
                        new     T_node( val )
                    );
    }
    else
    {
        insert_in_tree  (
                            val < tree->val_
                                ?   tree->left_
                                :   tree->right_,
 
                            val
                        );
    }//else
}
///////////////////////////////////////////////////////////////////////////////
void    show_tree
    (
        T_tree  tree,
        T_str   s   =   {}
    )
{
    if ( !tree )
    {
        return;
    }
 
    std::cout   <<  tree->val_
                <<  std::endl;
 
    if( tree->left_ )
    {
        std::cout   <<  s   <<  "|"     <<  std::endl
                    <<  s   <<  "L__";
 
        show_tree   (
                        tree->left_,
 
                        s + (
                                !tree->right_
                                    ?   "   "
                                    :   "|  "
                            )
                    );
    }//if
 
    if( tree->right_ )
    {
        std::cout   <<  s   <<  "|"     << std::endl
                    <<  s   <<  "R__";
 
        show_tree   (
                        tree->right_,
                        s + "   "
                    );
    }//if
}
///////////////////////////////////////////////////////////////////////////////
void    swap_subtrees_values( T_tree  tree )
{
    if( tree )
    {
        swap_subtrees_values( tree->left_  );
        swap_subtrees_values( tree->right_ );
 
        if  (
                    tree->left_
                &&  tree->right_
            )
        {
            std::swap   (
                            tree->left_     ->val_,
                            tree->right_    ->val_
                        );
        }//if
    }//if
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    int     n{};
    std::cout   <<  "n = ";
    std::cin    >>  n;
 
    std::cout   <<  "\nInput "
                <<  n
                <<  " integer values:"
                <<  std::endl;
 
    T_tree  tree;
 
    for( int  i{}; i < n; ++i )
    {
        std::cout   <<  "\t# "
                    <<  i + 1
                    <<  "\t: ";
 
        int     val{};
        std::cin    >>  val;
 
        insert_in_tree
            (
                tree,
                val
            );
    }//for
 
    std::cout   <<  std::endl;
    show_tree               ( tree );
 
    swap_subtrees_values    ( tree );
 
    std::cout   <<  std::endl;
    show_tree               ( tree );
}
0
0 / 0 / 0
Регистрация: 11.11.2015
Сообщений: 36
29.10.2016, 18:29  [ТС] 3
слишком как-то коряво
up

Добавлено через 13 минут
Цитата Сообщение от Mr.X Посмотреть сообщение
C++
можно узнать, откуда этот код?
Просто в нем слишком много ошибок
0
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,296
Записей в блоге: 2
30.10.2016, 08:39 4
Цитата Сообщение от satar160 Посмотреть сообщение
можно узнать, откуда этот код?
Скорее всего, сам писал.
Цитата Сообщение от satar160 Посмотреть сообщение
Просто в нем слишком много ошибок
Хоть одну покажите? А то мы в недоумении.
Вангую, что у кого-то стандарты новые не поддерживаются.
Цитата Сообщение от satar160 Посмотреть сообщение
слишком как-то коряво
Mr.X, зачем такой код корявый пишите?
Вот и помогай после этого людям.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2016, 08:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выделение памяти для поддерева(вершины) бинарного дерева поиска
как выделить память под вершину бинарного дерева? Почему у меня неверно выделяется память? class...

Для каждой строки таблицы поменять местами соседние элементы
Написать консольную программу, выполняющую следующие действия: 1. Обеспечить получение параметров...

Поменять местами нужны элементы дерева.
Добрый вечер! Помогите, пожалуйста! Сделала половину задания только,дальше ну никак не...

Удаление вершины бинарного дерева
Как удалять вершины бинарного дерева вместе с потомками?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.