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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из файла после определенного символа в нужной строке вывести оставшуюся строку на экран http://www.cyberforum.ru/cpp-beginners/thread1198462.html
#include<iostream> #include<string> #include<conio.h> #include<Windows.h> #include<fstream> #include<vector> #include<stdio.h> #include <iterator> using namespace std;
C++ Узнать, куда указывает strstr Здравствуйте, у меня есть массив. С помощью STRSTR я проверяю его на наличие строки, но как мне на каком по счету элементе массива сработала функция STRSTR. Просто задача состоит в том что бы... http://www.cyberforum.ru/cpp-beginners/thread1198459.html
C++ Класс "Таблица бомбардиров"
Вообщем задача у меня такая, создать класс в С++, в данном случае, с помощью класса хочу реализовать таблицу бомбардиров... задаю фамилию игрока и минуту на которой он забил... программа...
C++ Напишите программу для вычисления суммы и разности двух целых чисел
Напишите программу для вычисления суммы и разности двух целых чисел, а также умножения целого числа на число 2, целой части частного и остатка при делении целого числа на число 2. Программа не должна...
C++ Directx SDK http://www.cyberforum.ru/cpp-beginners/thread1198410.html
D3DFont.h D3DUtil.h Где можно их найти? В directx sdk во всех версиях их нет.
C++ Создать иерархию классов, представляющих простое наследование. Базовый класс – строка символов (char *) . Создать иерархию классов представляющих простое наследование. Базовый класс – строка символов (char *). Производный класс – методы, работающие с данными базового класса. Реализовать в производном... подробнее

Показать сообщение отдельно
sssf90
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 60

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

04.06.2014, 01:21. Просмотров 234. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru