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

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

Войти
Регистрация
Восстановить пароль
 
Lera_E
#1

Деревья(узлы и глубина) - C++

15.10.2013, 13:04. Просмотров 236. Ответов 0
Метки нет (Все метки)

У меня задание заполнить дерево целыми числами вручную.По заданным значениям "х" рассчитать число всех узлов с глубиной "х" в заданном дереве.
Я описала структуру дерева и попыталась написать функцию для добавления узла в дерево(я там цикл написала, потому как мне надо значений 10-15 с клавиатуры ввести). Помогите дописать и исправить ошибки пожалуйста.
#include<iostream>
#include<stdlib.h>
using namespace std;

struct node
{
int key;
char value[10];
};
struct tree
{
node data;
tree *left, *right;
} *root;
tree* InsRec(tree *root, node data, int **n) //äîáàâëåíèå óçëà â äåðåâî
{

for(int i = 0; i < n; i++)
{

if(!root)
{
root = new tree;
root->data.key=data.key;
strcpy(root->data.value, data.value);
root->left=0; root->right=0;
}
else
if(data.key < root->data.key)
root->left=InsRec(root->left,data);
else
root->right=InsRec(root->right, data);
}
return root;
}
int main()
{

tree* InsRec( &n);
cout << vvedite n;
cin >> n;
system("pause");


}

Добавлено через 17 часов 38 минут
Переделала код с нуля. он теперь компилируется. Но тут только созданное дерево. Как выполнить само задание не знаю. помогите пожалуйста:
#include <iostream>
#include <conio.h>
using namespace std;

struct Node
{
int x;
Node *l,*r;
};

void show(Node *&Tree)
{
if (Tree!=NULL)
{
show(Tree->l);
cout<<Tree->x;
show(Tree->r);
}
}

void add_node(int x,Node *&MyTree)
{
if (NULL==MyTree)
{
MyTree=new Node;
MyTree->x=x;
MyTree->l=MyTree->r=NULL;
}

if (x<MyTree->x)
{
if (MyTree->l!=NULL) add_node(x,MyTree->l);
else
{
MyTree->l=new Node;
MyTree->l->l=MyTree->l->r=NULL;
MyTree->l->x=x;
}
}

if (x>MyTree->x)
{
if (MyTree->r!=NULL) add_node(x,MyTree->r);
else
{
MyTree->r=new Node;
MyTree->r->l=MyTree->r->r=NULL;
MyTree->r->x=x;
}
}

}
void DeleteTree(Node *Tree)
{
if (Tree)
{
DeleteTree(Tree->l);
DeleteTree(Tree->r);
delete Tree;
Tree = NULL;
}
}
int main()
{
Node *Tree=NULL;
int z,k;
cin >> z;
for (int i=0;i<z;i++)
{
cin >> k;
add_node(k,Tree);
}
show(Tree);
DeleteTree(Tree);
cin.get();
getch();
return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 13:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Деревья(узлы и глубина) (C++):

Максимальная глубина дерева - C++
Помогите пожалуйста написать программу: Определить максимальную глубину дерева,т.е число узлов в самом длинном пути от корня дерева до...

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

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

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

Скопировать все узлы связного списка в новый - C++
существует связный список. Требуется скопировать все его узлы в новый спискок, в обратном порядке

Связать узлы одного уровня в бинарном дереве - C++
В сети нашел мало инфьі на ету тему, нужна помощь поскольку мое решение работает не коректно. Есть такое дерево ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 13:04
Привет! Вот еще темы с ответами:

Идея собирать узлы в кластеры во время простоя машины - C++
Я тут поимел такую идею, смысл которой в следующем: Во время простоя машины (по существу после того как машина залочена) обычно это...

Однонаправленный список: как ввести значение в head и последующие узлы списка? - C++
В head не хранится значение, не могу добавить информацию в первый элемент, из за чего список является пустым. Как ввести значение в head...

Напишите функцию которая соединит все узлы на том же уровне в дереве - C++
Есть задачка по дереву: Напишите функцию , которая соединит все узлы на том же уровне в дереве ( не только из примера , но любое данное...

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


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

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

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