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

бинарные деревья - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить номер первого из столбцов матрицы, содержащих хотя бы один нулевой элемент http://www.cyberforum.ru/cpp-beginners/thread370474.html
Задача с двумерным массивом на C (не C++). Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент. Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик. Если кто знает, помогите, пожалуйста!
C++ Динамическое выделение памяти в dll Читая Рихтера наткнулся вот на такое замечание:NOTE: Важно понимать, что единое адресное пространство состоит из одного исполняемого модуля и нескольких DLL-модулей. Одни из них могут быть скомпонованы со статически подключаемой библиотекой С/С++, другие — с DLL-версией той же библиотеки, а третьи (написанные нс на С/С++) вообще ею не пользуются Многие разработчики допускают ошибку, забывая,... http://www.cyberforum.ru/cpp-beginners/thread370440.html
C++ Транспонирование матрицы
int _tmain(int argc, _TCHAR* argv) { const int n=5; int a; srand(GetTickCount()); for (int i=0; i < n; i++) for (int j=0; j < n; j++) a=rand()%10; for (int i=0;i<n;i++) {
C++ Перегрузка оператора ==, в классе Матрица
#ifndef MATRIX_H #define MATRIX_H template <class T> class Matrix { public: Matrix(int Rows, int Cols); ~Matrix(); int RowsCount()const;
C++ Проблема с вводом текста. http://www.cyberforum.ru/cpp-beginners/thread370430.html
Привет всем!!! извините конечно, за столь простой вопрос.. забыл и никак вспомнить не могу, как в Объект инспекторе выставить значения текста в кнопке не по центру как по умолчания выравнивается, а по длине кнопки.. Заранее благодарю..
C++ Какие есть библиотеки для работы с MYSQL Всем привет. Я ищу простую (С++) библиотеку для работы с MYSQL. Программа консольная, среда Visual Studio 9-10 Сурс из официального сайта мускула, буст и ACE не вариант. Заранее благодарю.:drink: подробнее

Показать сообщение отдельно
CheToZudit
9 / 9 / 2
Регистрация: 22.10.2011
Сообщений: 19
22.10.2011, 05:42     бинарные деревья
У Вирта довольно подробно описано построение сбалансированного дерева. Там же по-моему можно найти форматированный вывод дерева. Найти такую книжку в интернетах не проблема

Добавлено через 54 минуты
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
# include <iostream>
 
using namespace std;
 
class Tree          // tree
{
public:
    struct Node     // struct of Tree's elem
    {
        int key;
        Node *left;     
        Node *right;
        void PrintEl(int lvl);
    };
 
private:
    Node *root;     // ук-ль на корень дерева
    void Insert(int k, Node *&root);    // поиск и вставка эл-та
public:
    Tree() {root = 0;}
    Node* GetRoot() {return *&root ;}
    void BuildTree();   // build tree (:
    void TraceLeft(Node *root);
    void PrintTree();
};
 
int main()
{
    Tree tree;
    tree.BuildTree();
    cout << "It's your tree (:" << endl;
    //tree.TraceLeft(tree.GetRoot());
    tree.PrintTree();
    return 0;
}
 
void Tree::BuildTree()
{
    int k;      // it's temporary for key
    cout << "Enter key" << endl;
    while (cin >> k)
        Insert(k, root);
}
 
void Tree::Insert(int k, Node *&root)
{
    if (root == 0)
    {
        root = new Node;
        root->key = k;
        root->left = 0; root->right = 0;
    }
    else if (k < root->key)
            Insert(k, root->left);
        else if (k > root->key)
            Insert(k, root->right);
}
void Tree::TraceLeft(Node *root)
{
    if (root != 0)
    {
        TraceLeft(root->left);
        cout << root->key << " ";
        TraceLeft(root->right);
    }
}
void Tree::PrintTree()
{
    cout << endl;
    if (root)
        root->PrintEl(0);
}
void Tree::Node::PrintEl(int lvl)
{
    for (int i  = 0; i < lvl; i++)
        cout << " ";
    cout << key << endl;
    if (left)
        left->PrintEl(lvl + 1);
    if (right)
        right->PrintEl(lvl + 1);
}
Вот я кое-что наваял. Только весь код лучше не оценивать, мне за него немножко стыдно, а нужные функции форматированного вывода вроде нормально работают
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru