Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
SilenTHunteRVAD

Вставка поддерева в дерево и удаление поддерева из дерева

22.04.2013, 20:39. Показов 791. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вставка поддерева у меня работает хорошо,а вот с удалением проблемы. Вообщем надо,что бы программа вывела и удаленное поддерево, и само дерево(естественно уже без поддерева).
Вот код:
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
#include <iostream>
#include <conio.h>
using namespace std;
struct tree{
    int a;
    tree *l,*r;
 
};
tree *nodebuild(tree *k,int a){
    if (k==NULL){
        k=new tree;
        k->l=NULL;
        k->r=NULL;
        k->a=a;
    }
    else {
        if (a<k->a)
            k->l=nodebuild(k->l,a);
        else
            k->r=nodebuild(k->r,a);
    }
    return k;
}
void treeprint(tree *k){
    cout<<"\n"<<k->a;
    if (k->l)
        treeprint(k->l);
    if (k->r)
        treeprint(k->r);
}
void insert(tree *root,tree *subroot,tree *list){
    if ( (root->a==list->a)){
        if (root->r==NULL)
            root->r=subroot;
        else 
            insert(root->r,subroot,list);
    }
    else{
        if (list->a<root->a)
            insert(root->l,subroot,list);
        else
            insert(root->r,subroot,list);
    }
}
tree *cut(tree *root,int b){
    if (root->a==b){
        tree *p;
        p=root;
        root=NULL;
        return p;
    }
    else {
        if (b<root->a)
            return cut(root->l,b);
        else
            return cut(root->r,b);
    }
}
int main(){
    tree *p,*root,*subroot,*list;
    p=root=NULL;
    subroot=NULL;
    list=NULL;
    int b,n;
    cout<<"please enter a root\n";
    while(cin>>b)
        root=nodebuild(root,b);
    treeprint(root);
    cin.clear();
    cout<<"\nplease enter a subroot which you want to insert your tree\n";
    while(cin>>b)
        subroot=nodebuild(subroot,b);
    treeprint(subroot);
    cout<<"\nplease enter a list of your tree which you want to insert your subroot\n"; 
    cin.clear();
    cin>>b;
    list=new tree;
    list->a=b;
    list->l=NULL;
    list->r=NULL;
    insert(root,subroot,list);
    cout<<"\nyour tree with insert\n";
    treeprint(root);
    cout<<"\nplease enter a number which you want to cut of your tree\n";
    cin>>b;
    subroot=cut(root,b);
    cout<<"\nwhat we cutting\n";
    treeprint(subroot);
    cout<<"\n tree";
    treeprint(root);
    getch();
    return 0;
}
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2013, 20:39
Ответы с готовыми решениями:

Поменять местами первый элемент левого поддерева и максимальный элемент правого поддерева
Здравствуйте! Помогите, пожалуйста, с заданием по деревьям. Условие: поменять места первый элемент левого поддерева и максимальный...

Вставка поддерева в указанное место бинарного дерева
Разработайте программу работы с бинарным деревом. Программа должна содержать следующие процедуры, вызываемые из меню: - построение...

Рекурсия: Вывести номера вершин, для которых высота левого поддерева не равна высоте правого поддерева
Вывести номера вершин, для которых высота левого поддерева не равна высоте правого поддерева.:(

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.04.2013, 20:39
Помогаю со студенческими работами здесь

Выделение поддерева из имеющегося дерева
Ребята, выручайте) Определить функции (ПРЕДДЕРЕВО а дерево) и (ПОСЛЕДЕРЕВО а дерево), которые выделяют в отдельное (упорядоченное) дерево...

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

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

Операции над бинарными деревьями: построение дерева, обход дерева, вставка и удаление элемента дерева
Пожалуйста кто сможет, помогите составить программу: Организация по трудоустройству населения сохраняет резюме клиентов в виде бинарного...

Уничтожение поддерева
Помогите пожалуйста((( с помощью одной составной команды shell выполнить действия: Уничтожение поддерева, имя корневого каталога...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru