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

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

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

Создание массива из элементов бинарного дерева - C++

04.06.2014, 01:21. Просмотров 233. Ответов 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
void searchlist(node *der, int A[])
{   
    node *next,*tek;
    next=tek=der;
    while (next!=NULL)
    {
    tek=next;
    if ((der->left!=NULL && der->right==NULL)||(der->left==NULL && der->right!=NULL))
        {
            if(der->info %2 == 0)
                {
                    if (der->left==der->right)
                        {
                            for (int i=0;i<10;i++)
                                A[i]=der->info;
                        }
                }
        }
        
    }
 
    
   for (i=0;i<10;i++)
       std::cout<<"A["<<i<<"]"<<A[i]<<std::endl;
        
}
Помогите,пожалуйста.Очень нужно
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
#include <iostream>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <climits>
 
struct node
{
    int info;
    node *left, *right;
};
int maslis[20],i=0;
int maxi,mini;
float srar, rmax=-1e38;
int numb;
node *newder;
 
 
node *newn(int x)
{
    node *uk;
    uk=new node;
    uk->info=x;
    uk->left=uk->right=NULL;
    return(uk);
}
 
void setleft(node *p, int x)
{
    p->left=newn(x);
}
 
void setright(node *p, int x)
{
    p->right=newn(x);
}
 
node *form()
{
    int n;
    node *der=NULL, *next, *tek;
    puts("Input data \n letter means input is over");
    if(scanf("%d", &n)==1)
    { der=newn(n);
        while(scanf("%d", &n)==1)
        {
            next=tek=der;
            while(next!=NULL)
            {
                tek=next;
                if(n<tek->info) next=tek->left;
                else next=tek->right;
            }
            if(n<tek->info) setleft(tek, n);
            else setright(tek, n);
        }
    }
    return der;
}
 
void print_tree(node *der, int h)
{
    if(der)
    {
        print_tree(der->left, h+1);
        for(int i=0; i<h; i++) printf("    ");
        printf("%d\n", der->info);
        print_tree(der->right, h+1);
    }
}
 
 
void list(node *der)
{
    node *nnext, *ntek;
    
    if(der==NULL) return;
    if((der->left)==NULL && (der->right)==NULL)
    {
        maslis[i]=der->info;
        i++;}
    
    list(der->left);
    list(der->right);
}
node *nd()
{
    int j;
    node  *next, *tek, *newder;
    newder=newn(maslis[0]);
    for(j=1;j<i;j++)
    {
        
        next=tek=newder;
        while(next!=NULL)
        {
            tek=next;
            if(maslis[j]<tek->info)
                next=tek->left;
            else
                next=tek->right;
        }
        if(maslis[j]<tek->info) setleft(tek, maslis[j]);
        else setright(tek, maslis[j]);
        
    }
    return newder;
}
 
 
int main()
{
    
    
    node *der, *tek;
    puts("Let\'s make tree:");
    
    der=form();
    if(!der)
        puts("tree is empty");
    else
    {
        puts("source tree:");
        print_tree(der, 0);
        newder=NULL;
        list(der);
        newder=nd();
        if(!newder)
            puts("new tree is empty");
        else
        {
            puts("New tree:");
            print_tree(newder,0);
        }
    }
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 01:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание массива из элементов бинарного дерева (C++):

Создание бинарного дерева из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*&amp; Tree) { Bin q;

Создание бинарного дерева - C++
Есть задания и я знаю как их сделать, но не понимаю, как создать и вывести на экран бинарное дерево. Подскажите пожалуйста, ссылки, коды,...

Создание бинарного дерева поиска - C++
Людииииии помогите пож-таааа.....Нужно создать бинарное дерево поиска, считывая элементы из текст файла.. Очень нужноооо:( кто нибудь:(:(...

Создание прошитого бинарного дерева - C++
есть файл fIn.txt A BC D_IF ___L то есть _ значает что потомка нет (например у B потомок только B, второго нет); ,...

Создание строкового калькулятора на основе бинарного дерева - C++
Вот мой исходник. Проблема заключается в том, что не получается разложить строку на операторы с соответствующим приоритетом и операнды,...

Создание бинарного дерева и ограничение на количество узлов в ней - C++
В задании по созданию бинарного дерева есть условие на то, что узлов в дереве должно быть не больше 10. Пробую поставить такое ограничение...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2014, 01:21
Привет! Вот еще темы с ответами:

Построение бинарного дерева из двумерного массива - C++
Стыдно, если честно, об этом просить, но &quot;возник стопор&quot; и путных идей не приходит. Суть задачи: Есть массив n*n состоящий из целых...

Функция подсчета четных элементов бинарного дерева - C++
Требуется написать функцию подсчета количества четных узлов бинарного дерева

Удаление элементов из бинарного дерева (не дерево поиска) - C++
Задание заключается в создании бинарного дерева, из букв введенной строки, обходе дерева и удалении согласных букв из дерева. проблема...

Распределение элементов вектора внизу бинарного дерева - C++
Здравствуйте У меня такое задание : Дан вектор неопределенной длины (числа). Нужно сделать бинарное дерево, что бы самый нижний...


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

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

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