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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Iko
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 4
#1

Поиск и удаление в бинарном дереве, построенном на рекурсии - C++

07.11.2013, 08:24. Просмотров 187. Ответов 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
94
95
96
97
98
// Binary tree.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
struct Node
{
    int x;
    Node *l, *r;
    
};
 
void Show (Node *&Tree)
{
    if (Tree!=NULL)
    {
        Show(Tree->r);
        cout<<" ";
        cout<<Tree->x;
        cout<<" ";
        Show(Tree->l);
    }
}
 
void Add (int x, Node *& MyTree)
{
    if (NULL==MyTree)
    {
        MyTree = new Node;
        MyTree -> x=x;
        MyTree->l=MyTree->r=NULL;
    }
 
 
if (x<MyTree->x)
{
    if (MyTree->l!=NULL)
    {
        Add(x,MyTree->l);
    }
    else 
    {
        MyTree->l=new Node;
        MyTree->l->l=MyTree->l->r=NULL;
        MyTree->l->x=x;
    }
}
 
if (x>MyTree->x)
{
    if (MyTree->r!=NULL)
    {
        Add(x,MyTree->r);
    }
    else 
    {
        MyTree->r=new Node;
        MyTree->r->l=MyTree->r->r=NULL;
        MyTree->r->x=x;
    }
}
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"");
    int y,flag=1;
    Node *Tree = NULL;
    for (int i=10;i>0;i--)
    {
        Add(i,Tree);
    }
    Show(Tree);
    cout<<"\n";
    while(flag==1)
    {
        cout<<"\n";
        cout<<"\n";
        cout<<"Желаете ввести новый узел?  1-Да   0-Нет"<<endl;
        cin>>flag;
        if (flag==0)
            break;
        cout<<"\n";
        cout<<"Введите новый узел"<<endl;
        cin>>y;
 
        Add(y,Tree);
        cout<<"\n";
        Show(Tree);
 
    }
    
    system("pause");
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2013, 08:24     Поиск и удаление в бинарном дереве, построенном на рекурсии
Посмотрите здесь:

C++ Удаление элемента (узла) в бинарном дереве
C++ Количество листьев в бинарном дереве
C++ Поиск одинаковых элементов в бинарном дереве.
Поиск ключа в бинарном дереве поиска C++
C++ Простая организация удаление узла в бинарном дереве
Сумма чисел в бинарном дереве C++
Поиск предка элемента в бинарном дереве C++
C++ Поиск одинаковых элементов в бинарном дереве
C++ Поиск элемента с заданным ключом в бинарном дереве, используя обход
C++ Оператор присвоения в бинарном дереве
C++ Поиск суммы последовательных узлов в бинарном дереве
C++ Удалить узел в бинарном дереве

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

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

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