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

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

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

Помощь с деревом - C++

13.10.2013, 17:52. Просмотров 214. Ответов 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
#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)   //Если нововведенный элемент x меньше чем элемент 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)   //Если нововведенный элемент x больше чем элемент 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
13.10.2013, 17:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помощь с деревом (C++):

Сортировка деревом - C++
Программа должна прочитать строку слов из файла и отсортировать деревом. На выходе программа почему-то выдает не N слов из файла в...

Сортировка бинарным деревом - C++
Получить число n на ввод; сделать сортировку бинарным деревом и построить дерево графически

Является ли граф деревом - C++
Суть задачи заключается в том, что нужно проверить граф, является ли он деревом. Граф является деревом, если граф - связный и в графе...

Отобразить бинарным деревом предложение - C++
Ребят прошу вашей помощи, буду очень признателен. Отобразить с помощью бинарного дерева предложение: &quot;Белый снег покрывает черную землю&quot;....

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

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

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

Шаблонные функции работы с деревом - C++
Добрый день. Задача: преобразовать готовые рекурсивные функции работы с деревом в шаблонные. С шаблонами только ещё начал знакомится,...

Разработать программу работы с бинарным деревом - C++
Народ, прошу помощи в решении нескольких заданий, в противном случае, не видать мне сессии.... :cry: Задание №1 1)Упорядочить...

Определить, является ли дерево AVL деревом - C++
int s, kol, sr, a; void avl(PNode ptr) { int h1 = 0, h2 = 0, i = 0; if ((ptr-&gt;Left == NULL) &amp;&amp; (ptr-&gt;Right == NULL)) { ...

Разработать программу работы с бинарным деревом - C++
Разработать программу работы с бинарным деревом. Программа должна содержать следующие процедуры, вызываемые из меню: - построение...


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

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

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