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

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

Восстановить пароль Регистрация
 
sssf90
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 60
04.06.2014, 01:21     Создание массива из элементов бинарного дерева #1
Данная программа ищет листья в старом дереве и создает из них новое.
Мне нужно также создать массив,состоящий из неповторяющихся потомков четных отцов.
Я накидал такую функцию,но она не рабит
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 01:21     Создание массива из элементов бинарного дерева
Посмотрите здесь:

Построение бинарного дерева из двумерного массива C++
C++ Запись массива в виде бинарного дерева и вывод его на экран!
C++ создание прошитого бинарного дерева
Создание бинарного дерева поиска C++
Создание бинарного дерева C++
C++ Создание бинарного дерева и ограничение на количество узлов в ней
C++ Удаление элементов из бинарного дерева (не дерево поиска)
Функция подсчета четных элементов бинарного дерева C++

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

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

Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru