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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Списки. Удалить каждое последующее вхождение символа если он встречался до этого. http://www.cyberforum.ru/cpp-beginners/thread805884.html
Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен Задача 7 Двусвязный список В файле input.txt содержатся символы создать из этих символов список. Удалить каждое последующее вхождение символа если он встречался до этого. Input: = + - ) ( + ? _ - ) трава...
C++ Очередь. Удалить каждое последующее вхождение символа если он встречался до этого. Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен задача 6 очередь В файле input.txt содержатся символы создать из этих символов список. Удалить каждое последующее вхождение символа если он встречался до этого. input ( ( ( крат крит Код программы... http://www.cyberforum.ru/cpp-beginners/thread805881.html
C++ Закомментировать
#include <iostream> using namespace std; int main() { int a,b,a1,b1,r; r=1; cout << "Pervoe chislo = "; cin >> a; cout << "Vtoroe chislo = ";
Удалить каждое последующее вхождение символа если он встречался до этого C++
Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен Задача 4 Списки В файле input.txt содержатся символы создать из этих символов список. Удалить каждое последующее вхождение символа если он встречался до этого. Input: = + - ) ( + ? _ - ) Код программы...
C++ Создать класс Point для работы с точками на плоскости http://www.cyberforum.ru/cpp-beginners/thread805868.html
Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен Задача 3 Классы Создать класс Point для работы с точками на плоскости. Координаты точки – декартовы. Обязательно должны быть реализованы: • перемещение точки по оси Х; • перемещение точки по оси У;...
C++ Сортировка Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен Задание 2 Сортировка 2 input: 7 7 1 2 4 5 7 5 12 4 3 7 9 1 3 11 8 2 1 5 9 6 10 0 9 6 3 0 6 1 0 6 5 11 4 7 3 подробнее

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

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

11.03.2013, 18:07. Просмотров 768. Ответов 0
Метки (Все метки)

Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не сложно хотя бы по одной задачке буду очень благодарен

Задача 8 Деревья 1

в файле input.txt хранится последовательность целых чисел. По входной последовательности построить дерево бинарного поиска и найти количество узлов, имеющих только одного левого потомка
Input:
Код
15 10 9 13 12 8 18
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
#include <iostream>
#include <algorithm>
#include <string>
#include <fstream>
 
using namespace std;
 
class tree {
private:
 
    struct el {
        int val;
        el *l_tree;
        el *r_tree;
 
        el() {
            l_tree = 0;
            r_tree = 0;
        }
    };
 
    el *root;
 
public:
 
    tree() {root = 0;}
 
 
    void push (int x, el *&b) {
        if (!b) {
            el *t = new el;
            t->val = x;
            t->l_tree = t->r_tree = NULL;
            b = t;
        }
 
        if (b->val > x)
            push (x, b->l_tree);
        else
            if (b->val < x)
                push (x, b->r_tree);
    }
 
    void add (int x) {
        push(x, root);
    }
 
    //метод выводящий дерево в симметрическом порядке
    void print (el *r = 0) {
        if (r == 0)
            r = root;
 
        if (r->l_tree != 0)
            print (r->l_tree);
 
        cout << r->val << ' ';
 
        if (r->r_tree != 0)
            print (r->r_tree);
    }
 
    //метод ищущий ответ на задачу
    int ans (el *r = 0) {
        if (r == 0)
            r = root;
 
        int cnt = 0;
 
        if (r->l_tree != NULL) {
            cnt += ans (r->l_tree);
        }
 
        if (r->r_tree != NULL) {
            cnt += ans (r->r_tree);
        }
 
        if (r->l_tree != NULL && r->r_tree == NULL)
            ++cnt;
 
        return cnt;
    }
 
};
 
int main () {
    freopen("input.txt", "r", stdin);
    
    int x;
 
    tree derevo;
 
    while (cin >> x) {
        derevo.add(x);
    }
 
    cout << "Bin tree search:";
    derevo.print();
    cout << endl << "Answer:" << endl;
    cout << derevo.ans() << endl;
    return 0;
}
output:
Код
Bin tree search: 8 9 10 12 13 15 18
Answer: 2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru