Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Расположить элементы каждого столбца заданной матрицы по возрастанию значений https://www.cyberforum.ru/ cpp-beginners/ thread197117.html
помогите пожалуйста..
C++ Расположить элементы каждого столбца матрицы Х по возрастанию значения
Помогите пожалуйста, очень срочно. Завтра нужно сдавать..
C++ Дано натуральное число n. Вывести на экран все натуральные числа, меньше n и взаимно простые с ним. https://www.cyberforum.ru/ cpp-beginners/ thread197111.html
Помогите пожалуйста, мне на завтра 2 проги в универ, а я совсем не знаю как их сделать((( 1)Дано натуральное n(n<100), целые числа а1,.......,аn и b1,......bn. Построить пересечение последовательностей а1,.......,аn и b1,......bn, т.е получить последовательность с1,......,сk, содержащую все числа, входящие в а1,.......,аn и b1,......bn. 2) Дано натуральное число n. Вывести на экран все...
C++ Определить количество слов, которые начинаются и заканчиваются одной и той же буквой Нужна помощь! Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые начинаются и заканчиваются одной и той же буквой. https://www.cyberforum.ru/ cpp-beginners/ thread197100.html
Решение массивов C++
16. Даны две квадратные матрицы А и Х, соответствующих размерностей. Вычислить А+Х
C++ Удаление из массива одинаковых строк https://www.cyberforum.ru/ cpp-beginners/ thread197087.html
Здравствуйте. Передо мной стоит такая задача. Написать программу, в которой динамически создается массив строк. Строки вводятся с клавиатуры. В созданном массиве удалить все одинаковые строки и вывести полученный массив на экран. #include "stdafx.h" #include <iostream> using namespace std;
C++ Найти сумму элементов массива, расположенных до минимального элемента в одномерном массиве состоящем из n вещесивенных элементов вычислить: 1.произведение положительных элементов массива; 2.сумму элементов массива,расположенных до минимального элемента; упорядочить по возрасанию отдельно элементы,стоящие на четных местах,и элементы,стоящие на нечетных местах. народ кто знает как делать...помогите плз https://www.cyberforum.ru/ cpp-beginners/ thread197086.html За единственный проход по массиву найти неповторяющийся элемент C++
здравствуйте, уважаемые программисты.) у меня такой вопросик: дан массив из нечетного кол-ва элементов, каждый из который встречается в массиве 2 раза, кроме одного элемента. как это осуществить за один проход по массиву в цикле? Добавлено через 14 минут т.е. найти нужно этот элемент, встречающийся 1 раз за 1 проход по массиву. вот)
C++ Структуры В программе предусмотреть ввод исходной информации о студентах: фамилия и инициалы; год рождения; год поступления в БГУИР; оценки за первый семестр (минимум три). вывести список студентов и их оценки. Фамилии студентов начинаются с букв B и G. Помогите. Упорно не хочет выводить год рождения; год поступления в БГУИР; оценки за первый семестр (минимум три). Выводит только фамилии. #include... https://www.cyberforum.ru/ cpp-beginners/ thread197074.html C++ Решение примера из строки https://www.cyberforum.ru/ cpp-beginners/ thread197073.html
Здравствуйте. Помогите, пожалуйста, сделать задание. С клавиатуры вводится пример "5+3-1+4" Нужно решить пример с применением функций isdigit и atoi. Заранее спасибо за ответы.
C++ одномерный массив.
Даны два массива x содержащий k элементов и y содержащий n элементов и число q. Найти сумму вида x+y, наиболее близкую к числу q. напишите только как найти сумму x+y наиболее близкое к q... заранее спасибо.
C++ Сколько слагаемых должно быть в сумме Сколько слагаемых должно быть в сумме 1+1/2+1/3+1/4+...+1/n, чтобы эта сумма оказалась больше 5 ? пажастики помогите. https://www.cyberforum.ru/ cpp-beginners/ thread197070.html
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
0

Исправить код бинарного дерева - C++ - Ответ 1139721

25.11.2010, 00:32. Показов 2051. Ответов 7
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdlib.h>
#include <iostream>
 
 
 
struct uzel
{
   int key;//хранится в вершине ключ-значение
   struct uzel *left, *right;//указатели на правое и левое поддерево
};
 
uzel* not(int val)
{
  uzel *nod=new uzel;
  nod->key=val;
  nod->left=0;
  nod->right=0;
  return nod;
}
 
void add_tree(uzel *root, int val)//добавление элемента
{
  if (root==0) root = not(val);//если 0 создаем новую голову
  if (val < root->key)//если меньше значения то влево
  {
   if (root->left==0)//если 0 то просто запишем в левый узел элемент
     root->left = not(val);
   else
     add_tree(root->left, val);//иначе надо добавть влево влево
  }
  if (val > root->key)//если больше то вправо
  {
   if (root->right==0)
     root->right = not(val);//достаточно записать туда элемент
   else
     add_tree(root->right, val);//в правое правое поддерево
  }
     
 // return;
}
 
uzel* find_tree(uzel *root, int val)//поиск элемента
{
  if (root==0)//если нет ни одного элемента то вернуть 0
    return 0;
  if (val == root->key)//нашли - вот и славно
    return root;
  if (val < root->key)//если меньше то искать в левом поддереве
    return find_tree(root->left, val);
  if (val > root->key)//иначе вправом
    return find_tree(root->right, val);
}
 
int rightmost(uzel *root)//самый правый
{
  while (root->right != NULL)//пока не дойдет до правого с ссылкой 0
    root = root->right;//по правым подузлам шагать
  return root->key;//верняем то что туда затесалось
}
 
uzel* del_tree(uzel *root, int val)//удаление
{
  if (root==0) return 0;//если 0 так 0
  if (root->key == val) //если нашли то
  {
        //это элемент-лист
     if (root->left==0 && root->right==0) 
     {
      delete root;//достаточно просто удалить
      return 0;
     }
     if (root->right==0 && root->left != 0)//если есть один потомок левый 
     {
      uzel *temp = root->left;//то переменной типа "узел" запишем значение узла-потомка слева
      delete root;
      return temp;
     }
     if (root->left==0 && root->right != 0) //то же для правого
     {
      uzel *temp = root->right;
      delete root;
      return temp;
     }
     root->key = rightmost(root->left);//теперь в удаляемой позиции будет стоять элемент самый правый левого поддерева
     root->left = del_tree(root->left, root->key);//левым потомком удаляемого будет элемент левый левого поддерева с этим ключом
     return root;
  }
  if (val < root->key)//если значение меньше того что в корне то выполнить все необходимые операция для левого поддерева 
  {
   root->left = del_tree(root->left, val);
   return root;
  }
  if (val > root->key)//то же для правого 
  { 
   root->right = del_tree(root->right, val);
   return root;
  }
 return root;
}
 
void print_tree(uzel *root)//вывести дерево
{
 if (root != 0) 
 {
   print_tree(root->left);
   cout<<root->key<<" ";
   print_tree(root->right);
 }
}
 
int main()
{
    uzel *trie=0;
    int elem;
    cout<<"Insert elem"<<endl;
    cin>>elem;
    add_tree(trie,elem);
    print_tree(trie);
    return 0;
}
прога либо не выводит элемент либо не добавляет т.к. в результате не выводит ничего.
в чем проблема?

Вернуться к обсуждению:
Исправить код бинарного дерева C++
0
Лучшие ответы (1)
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2010, 00:32
Готовые ответы и решения:

Код Хаффмана реализованный через построение бинарного дерева
Здравствуйте, есть код Хаффмана реализованный через построение бинарного дерева, узлами которого...

Не работает код бинарного дерева для информационного поля char
Не работает код бинарного дерева для информационного поля char. Не могу понять в чем ошибка....

Дополнить код, чтобы получился полноценный прямой обход бинарного дерева
Подскажите как дополнить код,что бы получился полноценный прямой обход бинарного дерева......

Запись бинарного дерева в файл и восстановление из него этого дерева
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на...

7
25.11.2010, 00:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2010, 00:32
Помогаю со студенческими работами здесь

Написать шаблон бинарного дерева с функцией распечатки дерева
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией...

Создание бинарного дерева из бинарного файла
struct Bin { string name; string city; int players; int score; }; void...

Построение бинарного дерева на основе не бинарного
В лабораторной работе есть такое задание: Создайте процедуру построения бинарного дерева на основе...

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru