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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
istro2009
Сообщений: n/a
#1

Нужно вывести на экран содержимое самой длинной ветки бинарного дерева - C++

15.05.2011, 11:37. Просмотров 1644. Ответов 2
Метки нет (Все метки)

Нужно вывести на экран содержимое самой длинной ветки бинарного дерева на c++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2011, 11:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно вывести на экран содержимое самой длинной ветки бинарного дерева (C++):

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

Функция удаления листа (или ветки) бинарного дерева - C++
Здравствуйте программисты! Учусь на первом курсе. Возникли проблемы с разработкой функции удаления ветки листа или корня из дерева. Т.е....

Вывести размер самой длинной строки - C++
как вывести наибольшее кол-во символов через max не получается, и есть ли вообще такая функция "max" ? string a,b,c,f; cout...

Нужно найти длину самой длинной подпоследовательности, в которой равное количество 0 и 1. - C++
Здравствуйте. Задана последовательность из 0 и 1. Нужно найти длину самой длинной подпоследовательности, в которой равное количество 0 и...

Вывести номер строки матрицы с самой длинной последовательностью одинаковых элементов - C++
Пожалуста, кто знает решите пожалуста задачку: Дана квадратная матрица m*m, написать программу которая выводит номер той строки в матрице...

Вывести количество возрастающих последовательностей в массиве, а также длину самой длинной из них - C++
Помогите пожалуйста! Написать программу, в которой пользователь вводит элементы целочисленного массива с клавиатуры. Необходимо...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
RaTeN
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 10
15.05.2011, 17:14 #2
есть у кого идеи?

Добавлено через 1 час 22 минуты
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
#include <conio.h>
#include <malloc.h>
#include <stdio.h>
#include <iostream.h>
 
 
 
struct DER 
{
    int data;
    struct DER *l, *r;
};
 
typedef struct DER *TREE;
 
 
TREE BuildTree(int n)
{ 
    TREE pt_tree;
    int new_el, nl, nr;
    if (n==0) 
    {
        pt_tree = NULL;
        return pt_tree;
    }
    nl = n/2; nr=n-nl-1;
    scanf("%d\n", &new_el);
    pt_tree = (TREE)calloc(1,sizeof(struct DER));
    pt_tree->data = new_el;
    pt_tree->l = BuildTree(nl);
    pt_tree->r = BuildTree(nr);
    return pt_tree;
}
 
void PrintTree(TREE pt_tree)
{
    int i;
    if(pt_tree != NULL)
    {
        PrintTree(pt_tree -> l);
        printf("%d\n",pt_tree -> data);
        PrintTree(pt_tree -> r);
    }
}
 
int main()
{
    TREE tree;
    int tree_el, i;
    tree = NULL;
    tree=BuildTree(7);
    PrintTree(tree);
    return 0;
}

вот что накидал... но это элементарно...
0
istro2009
Сообщений: n/a
18.05.2011, 16:19 #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
92
93
94
95
96
97
#include <iostream>
#include<windows.h>
using namespace std;
 
struct point
{
    int data;           //информационное поле
    point *left;        //адрес левого поддерева
    point *right;       //адрес правого поддерева
};
 
point* Tree(int x, point *p)
{
    if(!p)
    {
        p=new point;
        p->left=NULL;
        p->right=NULL;
        p->data=x;
    }
 
    else
    {
        if(p->data>x)   {p->left=Tree(x, p->left);}
        else    {p->right=Tree(x, p->right);}
    }
    return p;
}
 
void Print(point *p, int l) 
{
    if(p)
    {
        Print(p->left,l+5);
        for(int i=0;i<l;i++)
            cout<<" ";
        cout<<p->data<<endl;
        Print(p->right,l+5);
    }
}
 
 
int maxim(int *mas, int *i)
{
    int n, min, t;
    min=mas[0];
    for(n=0;n<*i;n++)
        if(mas[n]>min)
        {
            min=mas[n];
            t=n;
        }
    return t;
}
 
 
 
int getlen(point* p, int level, int *k, int *mas, int *mas2, int *i)
{
 
    if (p->left) { getlen(p->left, level + 1, k, mas, mas2, i); }
    if (p->right) { getlen(p->right, level + 1, k, mas, mas2, i); }
 
    if ((!p->left) & (!p->right))
    {
        mas[*i]=p->data;
        mas2[*i]=level; 
        (*i)++;             
    }
    return mas[*i];
            
}   
 
 
 
void main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    const int t=5;
    int n,i=0, k, s, x, f;
    int mas[t], mas2[t];
    cout<<"Задайте количество элементов дерева\n";
    cin>>n;
    point *root=NULL;
    
    for(i=0;i<n;i++)
    {
        cout<<"элемент:";
        cin>>x;
        root=Tree(x, root); 
    }
    i=0;
    Print(root,0);      
    s=getlen(root, 1, &k, mas, mas2, &i);   
    cout<<"Элемент самой длинной ветки дерева: "<<mas[maxim(mas2, &i)]<<endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 16:19
Привет! Вот еще темы с ответами:

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

Запись массива в виде бинарного дерева и вывод его на экран! - C++
Задача: Зарандомить массив с 30 ел... от -100 до 100, создать бинарное дерево использую дан. массив, Вывод массива и дерева на экран.. ...

Как вывести все листья бинарного дерева? - C++
имеется Б-дерево. Как вывести все листья? class B_tree { public: B_tree(); B_tree(int amount, ...); void DeleteAllTree();...

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


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

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

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