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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В с++ такая задача: проверить, все ли столбцы матрицы содержат хотя бы один положительный элемент. http://www.cyberforum.ru/cpp-beginners/thread521923.html
Увожаемые люди помагите пожалуйста. Нужно решить вот такую непростую загадку: Дана матрица NxM. Проверить, все ли столбцы матрицы содержат хотя бы один положительный элемент. Если нет, то в первом столбце, не удовлетворяющем условию, заменить отрицательные элементы их модулями.
C++ Проход лабиринта в C++ Ребята, помогите...вобщем, необходимо пройти по лабиринту и найти самый короткий маршрут...лабиринт я создал, а как пройти по нему ума не приложу..люди добрые, доработайте пожалуйста!) Вот что у меня получилось: #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char* argv) { //1-стенка http://www.cyberforum.ru/cpp-beginners/thread521899.html
C++ Удалить k-тую строку матрицы
Требуется удалить k-тую строку матрицы размером n х m Число строк уменьшается на 1 Значение k вводится. Исходная матрица задается в виде двумерного массива случайным образом. Вывести на экран исходную и результирующую матрицы
virtual inline функция-член каласса C++
Возможно ли сочтание модификаторов virtual и inline для функции-члена каласса? Почему? И может ли реальная функция быть таковой: виртуальной и встроенной? Или inline будет проигнорировано?
C++ Тип double и количество символов после запятой http://www.cyberforum.ru/cpp-beginners/thread521874.html
Здравствуйте, уважаемые я дико нуб, поэтому помогите чем можете ) суть такова: тип переменной double необходимо сделать так, чтобы значение переменной было более точным, нежели до десятых, как оно является на данный момент то есть, на конкретном примере: нужно чтобы значение выражения 0.3 + 1\9 записывалось как 0.411 в переменную типа double , а не 0.4 , как у меня и происходит иначе у...
C++ Из 2х мерного массива в 1 мерный перевести вообщем нужно перевести 2х мерный массив(матрица) так что из каждого столбца выделить максимум и в результате получается одномерный массив... например: |123| |456| |789| результат:789 За ранее спасибо!!! подробнее

Показать сообщение отдельно
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
18.03.2012, 23:44     Бинарное дерево
Если Вы работаете с бинарными деревьями, то для его формирования лучше использовать банальную структуру типа
C++
1
2
3
4
5
6
7
struct Node
{
  Node *left;
  Node *right;
  int info;
}
Node *root; // Корень дерева, его посылать в обработчики
Далее кидать в процедуры - обработчики нужные узлы.
Данная структура будет занимать лишь 10-11 байт на узел (не помню, сколько занимает int).
Для класса же размер узла возрастет за счет ряда дескрипторов, и еще Бог знает чего.

Естественно, это скорее наставление, чем правило. Но все же.
Если же хотите использовать класс, то проще сделать класс, который будет содержать в себе все дерево, полностью, со всеми методами, а не конкретный узел.
Это что касается основы...

А обход дерева - делается крайне банально =)
Например:
C++
1
2
3
4
5
6
7
8
void ShowTree(Node *node)
{
  if( !node )
    return;
  ShowTree(node->left);
  ShowTree(node->right);
  cout << node->info;
}
Здесь происходит обход дерева справа налево, то есть сначала выводится полностью левое поддерево, а потом - правое.
Все просто до нимагу =)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru