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

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

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

Бинарное даерево С++ - C++

21.10.2013, 00:05. Просмотров 285. Ответов 7
Метки нет (Все метки)

Можно ли вывести на экран все не терминальные вершины дерева, которые больше чем заданное из клавиатуры число? Спасибо)

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
#include <iostream>
#include<stdlib.h>
#include<ctime>
#include<locale>
using namespace std;
struct BinaryTree{
       int Data; 
       BinaryTree* Left; 
       BinaryTree* Right; 
};
 
void Make_Binary_Tree(BinaryTree** Node, int n)
{
    setlocale(0,"Russsian");
  BinaryTree** ptr;
  srand(time(0)*1000);
  while (n > 0) 
  {
    ptr = Node;
    while (*ptr != NULL) 
    {
      if ((double) rand()/RAND_MAX < 0.5) 
        ptr = &((*ptr)->Left);
      else ptr = &((*ptr)->Right);
    }
    (*ptr) = new BinaryTree();
    cout << "Enter value ";
    cin >> (*ptr)->Data;
    n--;
  }
}
 
 
void Print_BinaryTree(BinaryTree* Node, int l){
  int i;
  if (Node != NULL) {
    Print_BinaryTree(Node->Right, l+1);
   for (i=0; i< l; i++) cout << "    ";
    printf ("%4ld", Node->Data);
    Print_BinaryTree(Node->Left, l+1);
  }
  else cout << endl;
}
 
int main()
{
    
    BinaryTree* BTree = NULL;
    const int tree_size = 8;
    Make_Binary_Tree(&BTree, tree_size);
    Print_BinaryTree(BTree, tree_size);
    system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2013, 00:05     Бинарное даерево С++
Посмотрите здесь:

Соединение двух программ в одну (бинарное сложение и бинарное сравнение) - C++
Помогите составить из двух этих программ одну (имею ввиду прога должна предлагать 2 эти варианта через case: при нажатии case 1 или case 2...

Бинарное слияние - C++
Не получается реализовать алгоритм. Хелп плз. http://img246.imageshack.us/img246/6600/binslimf5.jpg Вот что у меня получается. ...

Бинарное умножение - C++
Как бинарно умножить какое то число на нечетное число? например, число а*7

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

Бинарное умножение - C++
как число бинарно умножить на не четное число? типа а*7 (а- какое то число)

Бинарное включение - C++
Здравствуйте.задали лабораторную работу реализовать сортировку массива методом бинарного включения. Я провел в С++ весь день но ничего не...

Бинарное отрицание ~ - C++
Имеется 2 массива шестнадцатеричных чисел: 1) на 6 чисел 2) на 2 числа Требуется заполнить 3й массив 4 первых элемента первого...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
21.10.2013, 00:53     Бинарное даерево С++ #2
Не подскажешь, с какой целью ты используешь BinaryTree** вместо BinaryTree*. Потому-что плюсов от этого я у тебя, помимо более длинного кода, не увидел...
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
21.10.2013, 00:57  [ТС]     Бинарное даерево С++ #3
monolit, разве он от этого сильно изменится?
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
21.10.2013, 10:48     Бинарное даерево С++ #4
Ну, (скорее всего тебе это известно) такая красивая конструкция, как &((*ptr)->Left); превратится в не совсем красивую, но короткую: ptr->Left; =)
И, если я правильно понял задание, и вершины вывести без всякого порядка, то так:
C++
1
2
3
4
5
6
7
8
9
10
11
void Print_BinaryTree(BinaryTree* Node, int l){
  int i;
  if (Node != NULL) {
if (Node->Data>13/*тут твое число*/ && !Node->Left && !Node->Left) {
    printf ("%4ld ", Node->Data);
}
    Print_BinaryTree(Node->Right, l+1);
    Print_BinaryTree(Node->Left, l+1);
  }
  else cout << endl;
}
Ну, как-то так, с форматированием поработать надо еще. но скорее всего я тебя не понял, ибо это слишком уж просто.
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
21.10.2013, 18:48  [ТС]     Бинарное даерево С++ #5
monolit, Вообще задание звучит так: разработать программное дополнение в котором создается контейнер и заполняется вручную не менее 15-ти элементами и разработать программу которая выводит на экран все не терминальные вершины дерева, которые больше чем заданное из клавиатуры число, после чего все созданные контейнеры удаляются.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
21.10.2013, 19:41     Бинарное даерево С++ #6
Не терминальные - это, насколько я понимаю, "листья". И тогда приведенный мной код, при условии, что остальное все правильно, как раз должен выводить те вершины-листья, которые больше числа 13.
Тут, конечно, опечатался:
if (Node->Data>13/*тут твое число*/ && !Node->Left && !Node->Left)
Надо так:
C++
1
2
3
4
5
6
7
void Print_BinaryTree(BinaryTree* Node, int l){
  if (Node != NULL) {
    if (Node->Data>13/*тут твое число*/ && !Node->Left && !Node->Right) printf ("%4ld ", Node->Data);
    Print_BinaryTree(Node->Right, l+1);
    Print_BinaryTree(Node->Left, l+1);
  }
}
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
21.10.2013, 20:07  [ТС]     Бинарное даерево С++ #7
monolit, чуть-чуть не так, терминальные--это листья. И почему больше числа 13?))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 13:42     Бинарное даерево С++
Еще ссылки по теме:

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

Бинарное чтение файла - C++
FILE *ftm; ftm = _wfopen(fff, L&quot;r+&quot;); //fff - это переменная wchar_t содержащая имя файла! unsigned short buf = { 0 }; ...

бинарное дерево?Файл? - C++
объясните пожалуйста что означает слово бинарное?

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

Бинарное дерево с шаблоном - C++
Пишу бинарное дерево типа BST&lt;Key, Value&gt;. Значениями хочу сделать любые типы данных. По-этому пришол к шаблонам, но с реализацией не...


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

Или воспользуйтесь поиском по форуму:
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
22.10.2013, 13:42     Бинарное даерево С++ #8
Цитата Сообщение от Forumhelp Посмотреть сообщение
И почему больше числа 13?
так короче написать.
Цитата Сообщение от Forumhelp Посмотреть сообщение
терминальные--это листья
Ну тогда условие немного изменится:
C++
1
if (Node->Data>13 && (Node->Left || Node->Right))
Повторюсь - порядок вывода вершин может быть не совсем правильным (а может и правильный, проверять лень).
Yandex
Объявления
22.10.2013, 13:42     Бинарное даерево С++
Ответ Создать тему
Опции темы

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