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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Lonter
1 / 1 / 0
Регистрация: 22.04.2013
Сообщений: 45
#1

проверка на сбалансированность - C++

09.05.2013, 12:32. Просмотров 2052. Ответов 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
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
#include <stdio.h>
#include <conio.h>
 
struct node // Структура узла
{
int info ; 
int c ; 
node *ll,
*rl ; 
} ;
 
node *tree( node *p, int w );
 
void treeprint (node *p);
 
int tree_find (node *p);
 
int podschet( node *p);
 
void main ( )
{ 
    node *root; 
    int w, max, n; 
    FILE *rf;
    rf= fopen("in.txt", "r");
    root = NULL; 
    fscanf (rf, "%d", &w);
    while ( !feof ( rf ))
    { 
        root = tree ( root, w );
        fscanf(rf, "%d", &w);
    }
    treeprint(root);
    max = tree_find(root);
    printf("max = %d", max);
    n=podschet(root);
    printf("\nn = %d", n);
    getch();
}
 
node *tree(node *p, int w)
{
    if (p == NULL)
    { 
        p = new node;
        p->info = w;
        p->ll = NULL;
        p->rl = NULL;
        p->c = 1;
    }
    else
        if (w == p->info)
            p->c = p->c + 1; 
        else
            if (w < p -> info)
                p->ll = tree (p->ll, w);
            else 
                p->rl = tree (p->rl, w); 
    return p;
}
 
void treeprint (node *p)
{
    if (p!=NULL)
    {
        treeprint(p->ll); 
        printf("%d\t%d\n", p->c, p->info);
        treeprint(p->rl); 
    } 
}
 
int tree_find (node *p)
{
    if(p->rl!=NULL)
        return tree_find (p->rl);
    else
        return p->info;
}
 
int podschet( node *p)
{
    int n=0;
    while(p!=NULL)
    {
        p=p->rl;
        n++;
    }
    return n;
}
Добавлено через 19 часов 10 минут
пожалуууууйста))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2013, 12:32     проверка на сбалансированность
Посмотрите здесь:

Проверить бинарное дерево на сбалансированность - C++
Здравствуйте, помогите пожалуйста исправить ошибку в коде. Нужно проверить дерево на сбалансированность. Не на все данные выдает правильный...

Собираю ПК, сбалансированность сборки - Игровой компьютер
Решил купить новый ПК. Комплектация: Мат. плата - ASUS Maximus VIII Hero Процессор - i7 6700K Кулер - Cooler Master V8 GTS ...

Проверить сбалансированность скобок - Turbo Pascal
дано математическое выражение содержащий только круглые дужки.Використовуючы стек проверить сбалансированность скобок.:scratch:

Проверьте конфигурацию системника на сбалансированность. - Выбор компьютера
вот моя система: мать: P5ND проц: Q9550 2.83GHz видео: две GTX-260 sli БП: 900w ОЗУ: 4гб ОС: Windows7 x64 вопрос:...

Проверить сбалансированность скобок в тексте - PascalABC.NET
Проверить сбалансированность скобок в тексте(скобки сбалансированы,если закрывающая скобка расположена после соответствующей открывающей и...

Сделать подпрограмму которая проверяет сбалансированность скобок в строке - Pascal ABC
Напишите программу пожалуйста: Cоставить подпрограмму которая проверяет сбалансированность скобок в строке. Скобки считаются...

Проверьте на сбалансированность комплектующие: Intel Core i5-6500, R9 380 и др. - Игровой компьютер
Добрый день, хотел бы узнать нормально ли собран компьютер или что то в эту систему не вписывается. Все ли компоненты находятся на уровне...

Для каждой строки проверить сбалансированность открывающихся и закрывающихся скобок - Delphi
Дан текстовый файл, каждая строка которого переставляет собой арифметическое выражение. Реализовать ввод, удаления и корректировку данных в...

Что быстрее, проверка на null, или проверка на тип перечисления в запросе? - 1С
вопрос такой. если несколько таблиц. сходных по структуре в запросе. в первой таблице типТовара = перечисление.тратата.набор во...

Проверка на совпадение + проверка строки на содержание спец. символов - Delphi
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую...

Проверка метабокса - не сохранять пост, если проверка не пройдена - WordPress
Всем здравствуйте. Изучаю метабоксы в WP. Столкнулся с проблемой проверки метабокса. Возьмем мой код сохранения данных метабокса: ...

Visual C++ проверка ввода на число, проверка на кирилицу - C++
Суть ввести с клавиатуры нечто, и повторять ввод до тех пор пока введенное число не будет числом. Этот код проверяет на буквы и знаки,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
10.05.2013, 12:50     проверка на сбалансированность #2
Что-то типа этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cmath>
 
int check( node *h )
{
    if ( h == 0 ) return 1;
 
    int l = check( h->left );
    int r = check( h->right );
 
    if ( l == 0 || r == 0 ) return 0;
    if ( std::abs( l - r ) > 1 ) return 0;
    return ( l + r + 1 ) / 2 + 1;
}
Проверяет сбалансированность как в АВЛ-дереве, где высота поддеревьев может отличаться на 1.
Если функция вернет 0, то дерево не сбалансировано.
Корректность работы функции не проверял
Yandex
Объявления
10.05.2013, 12:50     проверка на сбалансированность
Ответ Создать тему
Опции темы

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