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

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

Войти
Регистрация
Восстановить пароль
 
nasty1996
1 / 1 / 0
Регистрация: 28.11.2012
Сообщений: 8
#1

Деревья. Высота узла в идеально сбалансированном дереве - C++

22.04.2014, 22:10. Просмотров 358. Ответов 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
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
#include <iostream>
#include<fstream>
using namespace std;
ifstream in("input.txt");
ofstream out ("output.txt");
//int a=0;
int h=0;
struct Ttree {int inf; Ttree * left, * right;};
 
//прямой обход
void preorder (Ttree *tr)
{
    if (tr) {
        cout<< tr->inf<<" ";
        preorder (tr->left);
        preorder (tr->right);
    }
}
// postroenie
void creat (int n,Ttree *&tr)
{
    int a;
    if (n>0){
        tr=new Ttree;
        in>>a;
        tr->inf =a;
        tr->left=tr->right=NULL;
        int nl=n/2, nr=n-nl-1;
        creat (nl,tr->left);
        creat (nr,tr->right);
 
    }
}
void height_tree (Ttree *tr, int &theight, int &height)
{
    if (tr) //если текущей узел не пустой
    {
        if (theight>height) //и высота текущего узла больше высоты дерева, то
            height=theight;// полагаем в качестве высоты дерева высоту текущего узла
        theight ++; //увеличиваем высмоту текущего узла
        height_tree(tr->left,theight,height); //обходим левое и правое его поддеревья
        height_tree (tr->right,theight,height);
        theight --;
    } else theight--; //после обхода узла высоту текущего узла уменьшаем на 1
}
 
void search1 (int x,Ttree *tr, int & code, int &theight)
{
 
    if (tr)
         {
            if (x==tr->inf)
            {
                cout <<endl << tr->inf;code = 1;
            }
    else
        {
 
            search1(x,tr->left, code, theight);
            search1(x,tr->right, code, theight);
            theight ++;
          }
    }
}
 
void del_tree(Ttree *&tr)
{
    if (tr)
    {
        del_tree(tr->left);
        del_tree (tr->right);
        delete tr;
        tr=NULL;
    }
}
 
 
 
 
int main ()
{
    int n;
    int x;
    in >> n >> x;
    Ttree *tree = NULL;
    creat (n,tree);
    preorder(tree);
    int code = 0;
 
    search1 (x,tree, code, h);
    if(!code) cout<<"";
    //height_tree(tree,a,h);
    cout<<endl<<h;
    del_tree(tree);
    in.close();
    out.close();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 22:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Деревья. Высота узла в идеально сбалансированном дереве (C++):

Подсчитать среднее арифметическое значений узлов в идеально сбалансированном дереве - C++
В файле input.txt хранится последовательность целых чисел. По входной последовательности построить идеально сбалансированное дерево и...

Написать программу построения и поиска в взвешенно-сбалансированном дереве. - C++
Необходима помощь с написанием программ на C++, реализующих деревья. Ну например: 1. В некотором институте информация об имеющихся...

Удаление элемента (узла) в бинарном дереве - C++
По заданию необходимо в бинарном дереве удалять все элементы равные искомому(как все удалять, я почему-то не осознал). На данный момент я...

Простая организация удаление узла в бинарном дереве - C++
Добрый день. У меня получился сильно громоздкий код для удаление узла дерева (не корня). Нет никаких идей по поводу упрощения. Может...

Деревья. Найти длину пути из узла a в узел b - C++
дано бинарное дерево. найти длину пути из узла a в узел b.(если такой узел не существует то вывести сообщение об этом) как можно...

Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве) - C++
Здравствуйте! Помогите, пожалуйста, в написании функции ,которая получает указатель на корень дерева и возвращает длинну самой длинной...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 22:10
Привет! Вот еще темы с ответами:

Идеально сбалансированное дерево - C++
В файле input.txt хранится последовательность целых чисел.По входной последовательности построить идеально сбалансированное дерево и найти...

Идеально сбалансированное дерево - C++
Всем привет. Нужно построить идеально сбалансированное дерево из букв, упорядоченное я сделал, но не могу понять, как сделать идеально...

Идеально сбалансированное дерево - C++
Интересует как работает этот кусок кода) по идеи Create(&amp;tmp-&gt;right, nr); сюда компилятор никогда не доберется? и еще как она выходит из...

Идеально сбансированное дерево - C++
Нужно построить идеально сбансированно дерево, посчитать сумму элементов элементов в правом поддереве. С построением дерева проблем...


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

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

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