Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 3
Регистрация: 10.04.2014
Сообщений: 95
1

Разработать программу, которая выводит на экран элементы из всех листьев дерева

15.05.2018, 21:17. Показов 1779. Ответов 3
Метки нет (Все метки)

Разработать программу, которая выводит на экран элементы из всех листьев дерева

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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
struct btree {
    btree() :e(), l(), r() {}
    int e;
    btree *l, *r;
};
 
struct list {
    btree *z;
    list *next;
};
typedef list stack;
 
stack *iinput(btree *x, stack *head) {//?????????? ???????? ? ????
    stack *s;
    s = new list;
    s->z = x;
    s->next = head;
    head = s;
    return head;
}
 
btree *gget(stack **head) {//?????? ???????? ?? ?????
    btree *x = (*head)->z;
    stack *g = (*head)->next;
    *head = NULL;
    *head = g;
    return x;
}
 
void add(btree **t, int value){//???? ??????
    if (*t == NULL) {
        *t = new btree;
        (*t)->e = value;
    }
    else  {
        btree *t2 = *t;
        while (t2 != NULL)  {
            if (t2->e < value)  { //??????? 
                if (t2->r == NULL)  {
                    t2->r = new btree;
                    t2->r->e = value;
                    t2 = NULL;  }
                else  {
                    t2 = t2->r; }   }
            else{ //?????? 
                if (t2->l == NULL)  {
                    t2->l = new btree;
                    t2->l->e = value;
                    t2 = NULL;  }
                else  {
                    t2 = t2->l;
}}}}}
 
void obh(btree *d) {//?????????? ????? ???? ?? ????????? ??????? ? ?????????? ?????????
    stack *S = NULL; int F = 1, x;
    printf("zadaite zna4enie  \n");
    scanf("%d", &x);
    while (F){
        while (d != NULL) {
            S = iinput(d, S);
            d = d->l;
        } 
        if (S != NULL) { 
            d = gget(&S);
 
//???????? ????????
 
            d = d->r;
        }
        else F = 0;
    }
    printf("dlina puti= %d \n",);
}
 
int main(){
    int x;
    btree *T = NULL;
    printf("vvedite derevo \n");
    while ((_kbhit() == 0) && (_getch() != 27)) {
        scanf("%d", &x);
        add(&T, x);
    }
    printf("okon4en vvod dereva \n");
    obh(T);
    _getch();
}
Добавлено через 5 часов 11 минут
не выводит
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2018, 21:17
Ответы с готовыми решениями:

Разработать программу, которая выводит на экран элементы из всех листьев дерева
Разработать программу, которая выводит на экран элементы из всех листьев дерева Ругается на 33...

Функция, которая печатает элементы из всех листьев бинарного дерева
Написать функцию, которая печатает элементы из всех листьев дерева. Добавлено через 2 часа 26...

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

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

3
544 / 438 / 357
Регистрация: 05.11.2013
Сообщений: 1,209
Записей в блоге: 6
16.05.2018, 07:16 2
а вот эта выводит
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
//Visual Studio 2015
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <iostream>
#include <string>
#include <locale.h>
#include <windows.h>
using namespace std;
 
typedef struct btree {
 int val;
 btree *left, *right;
};
 
//----- Рекурсивный поиск в двоичном дереве---------------
// Возвращается указатель на найденную вершину
btree *Search(btree *p, int v) {
 if (p == NULL) return(NULL);                    // Ветка пустая
 if (p->val == v) return(p);                   // Вершина найдена
 if (p->val > v)                            // Сравнение с текущим
  return(Search(p->left, v));                   // Левое поддерево
 else
  return(Search(p->right, v));                  // Правое поддерево
}
 
//----- Включение значения в двоичное дерево--------------
// функция возвращает указатель на созданную вершину,
// либо на существующее поддерево
btree *Insert(btree *pp, btree *v) {
 if (pp == NULL) {           // Найдена свободная ветка
                             // Создать вершину дерева
  btree *q = new btree;      // и вернуть указатель
  q->val = v->val;
  q->left = q->right = NULL;
  return q;
 }
 if (pp->val == v->val) return pp;
 if (pp->val > v->val)                     // Перейти в левое или
  pp->left = Insert(pp->left, v);            // правое поддерево
 else
  pp->right = Insert(pp->right, v);
 return pp;
}
 
// Рекурсивный обход двоичного дерева с выводом
// значений вершин в порядке возрастания
void Scan(btree *p) {
 if (p == NULL) return;
 Scan(p->left);
 cout << p->val << endl;
 Scan(p->right);
}
 
// Рекурсивный обход двоичного дерева с нумерацией вершин
// снизу-вверх слева-направо, n - текущий номер вершины
int Scan2(btree * p, int n) {
 if (p == NULL) return n;
 Scan2(p->left, n);
 n++;
 cout << n << ") " << p->val << endl;
 n = Scan2(p->right, n);
 return n;
}
 
// Рекурсивный обход двоичного дерева с последовательной
// нумерацией вершин в возвратом указателя на вершину с заданным номером
// Глобальный счетчик вершин передается через указатель
btree *ScanNum(btree *p, int *n) {
 btree *q;
 if (p == NULL) return NULL;
 q = ScanNum(p->left, n);
 if (q != NULL) return q;
 if ((*n)-- == 0) return p;
 return ScanNum(p->right, n);
}
 
int main(void) {
 int v = 1;
 btree *root = NULL;
 int depth = 1;
 setlocale(LC_ALL, "Rus"); SetConsoleCP(1251); SetConsoleOutputCP(1251);
 // ввод узлов 
 while (1) {
  printf("\n Введите целое число (узел дерева) или 0 для выхода:");
  fflush(stdin);
  scanf("%d", &v);
  if (!v) break;
  btree node;
  node.val = v;
  root = Insert(root, &node);
 }
 // поиск значения
 printf("\n введите узел для поиска:");
 fflush(stdin);
 scanf("%d", &v);
 btree *found = Search(root, v);
 if (found) printf("\n found %d\n", found->val);
 else printf("\n not found %d\n", v);
 // нумерация вершин
 printf("\nScan:\n");
 Scan(root);
 printf("\n введите начальный номер вершины:");
 fflush(stdin);
 scanf("%d", &v);
 // поиск по номеру вершины
 printf("\nScan2:\n");
 Scan2(root, v);
 printf("\nScan&Num:\n");
 found = ScanNum(root, &v);
 if (found) printf("\n found %d\n", found->val);
 else printf("\n not found %d\n", v);
 fflush(stdin); getchar(); getchar();
 return 0;
}
0
0 / 0 / 3
Регистрация: 10.04.2014
Сообщений: 95
23.05.2018, 12:03  [ТС] 3
на 12ую ругается12
C:\Users\admin\Desktop\Íîâàÿ ïàïêà (4)\Untitled1.cpp [Warning] 'typedef' was ignored in this declaration
0
471 / 423 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
23.05.2018, 12:07 4
D3NZO, Это же варнинг обычный. Но если хочется его убрать:
C++
1
2
3
4
typedef struct _btree {
    int val;
    _btree *left, *right;
}btree;
Или просто:
C++
1
2
3
4
5
struct btree 
{
    int val;
    btree *left, *right;
};
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2018, 12:07

Вывести элементы из всех листьев дерева
Здравствуйте, помогите пожалуйста с заданием по прологу, нужно вывести элементы из всех листьев...

Разработать программу, которая выводит на экран
Разработать программу, которая выводит на экран монитора одним оператором Ваша фамилия, имя,...

Разработать программу, которая выводит на экран ёлочку
Разработать программу, которая выводит на экран ёлочку (три уменьшающихся треугольника зеленого...

Разработать программу, которая выводит на экран геометрическую фигуру
Разработать программу, которая выводит на экран геометрическую фигуру, заполняя ее символом ‘*’ или...


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

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

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