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

Заполнение дерева по заданным условиям - C++

Восстановить пароль Регистрация
 
NightVVanderer
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 10
10.10.2013, 23:21     Заполнение дерева по заданным условиям #1
Здравствуйте! Мне нужно заполнить дерево по заданным условиям, но я не знаю как это сделать, помогите пожалуйста.
Условия:
От каждого узла дерева, начиная с корня, нужно создавать по 2 потомка, в одного записывается значение узла плюс 1,
в другой - значение узла умноженное на два. Значение корня и максимум вводятся пользователем. То есть создав 2 потомка от корня, надо создать по 2 потомка от каждого из них и так далее, пока один из потомков не превысит максимум, если превысит то все следующие потомки будут иметь значение NULL. И так до тех пор пока все листы дерева не станут равны NULL. Нарисовал как это примерно будет на картинке.
То как я реализовал дерево:
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
struct Node //Звено дерева
{
   int x; //То, что записывается в дерево
   Node *l,*r; //Это указатели на новые звенья
};
 
 void Show(Node *&tree) //Вывод на экран дерева.
 
{
    if (NULL==tree)    return;    //Если дерева нет, выход
   
    cout<<tree->x<<endl; //Посещение узла
    Show(tree->l); //Обход левое поддерево   
    Show(tree->r); //Обход правое поддерево   
}
 
 
void add(int x,Node *&tree) //В функцию принимается записываемый элемент и указатель на ссылку на структуру.
{
    if (NULL==tree) //если ничего нет
    {
        tree=new Node; //выделить память 
        tree->l=tree->r=NULL; //очистка участков для роста
        tree->x=x; //записывание в звено данные 
    }
 
    else if (NULL==tree->l) add(x,tree->l); //если слева участок не занят, подзвено создается там 
    else add(x,tree->r); //если занят, подзвено создается справа
}   
 
int _tmain(int argc, _TCHAR* argv[])
{
      int k,max; 
      cout << "Kol-vo=";
      cin >> k;
      cout << "Max kol-vo=";
      cin >> max;
      Node *Tree=NULL;  //Создается указатель, тип которого = звено дерева и инициализируется пустотой
      add(k,Tree); 
        Show(Tree); 
        cin.get();
      return 0;
}
Миниатюры
Заполнение дерева по заданным условиям  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 23:21     Заполнение дерева по заданным условиям
Посмотрите здесь:

C++ Множества. Выполнить действия над множествами: (B - A) * C (по заданным условиям).
C++ Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
C++ Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям C++
Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям C++
C++ Написать программу перебора слов, функций или чисел, удовлетворяющих заданным условиям
Заполнение бинарного дерева из файла C++
Заполнение дерева рандомно C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru