Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сбалансированное дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Серьезная оптимизация http://www.cyberforum.ru/cpp-beginners/thread699863.html
Участвую в олимпиаде, уже придумал алгоритм который обязан работать, но к сожалению вылетаю по тайм_лимит. Алгоритм линейный, я уже не знаю как программу оптимизировать. Вот код: #include...
C++ В произвольном тексте вставить между вторым и третьим словом новое слово "В произвольном тексте вставить между вторым и третьим словом новое слово." Помоги пожалуйста)) С коментариями если можно для чайника))) http://www.cyberforum.ru/cpp-beginners/thread699833.html
C++ Условие выводя ошибки
Написать условие если у нас три строки а мы просим например пятую,то программа выдавала ошибку в сообщение#include <vcl.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #pragma hdrstop ...
C++ Деструктор не вызывается
В одном классе я создаю объект, и если проверку не проходит, я его возвращаю в другой метод, дабы у меня там начало всех начал,Главное Меню void InputData(){ while(true){ ... Bank...
C++ Ошибка "неоднозначный вызов перегруженной функции" http://www.cyberforum.ru/cpp-beginners/thread699812.html
#include "stdafx.h" #include <iostream> #include <conio.h> #include "math.h" using namespace std; int count(int a,int b) { return a/pow(10,b-1)%10;
C++ Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. Сортировка вставками. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть а1, а2, ..., аi —упорядоченная... подробнее

Показать сообщение отдельно
Wolkodav
605 / 458 / 32
Регистрация: 18.09.2012
Сообщений: 1,685

Сбалансированное дерево - C++

16.11.2012, 23:33. Просмотров 553. Ответов 0
Метки (Все метки)

Народ, надо написать алгоритм создания сбалансированного дерева.
Вот сам алгоритм. Все хорошо, он работает, но не хватает одного элемента, т.е. он считывает на один элемент меньше чем надо!! Подскажите пожалуйста где ошибка.
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
Tree* BildTree(Tree* First,int n,ifstream* f)
{
    cout<<n<<endl;
    int left;
    int right;
    Tree* BranchAdd=First;
    int key;
    if (n==0)
    {
        return BranchAdd;
    }
    else
        if (n==1)
        {
            return First;
        }
        else
        {
            left=n/2;
            right=n-1-n/2;
            (*f)>>key;
            Add(BranchAdd,key,0);
            BildTree(BranchAdd->left,left,f);
            if (right>0)
            {
                (*f)>>key;
                Add(BranchAdd,key,1);
                BildTree(BranchAdd->right,right,f);
                First=BranchAdd;
                return First;
            }
        }
    return First;
}
Вот структура:
C++
1
2
3
4
5
6
struct Tree
{
    int key;
    Tree* left;
    Tree* right;
};
И Добовление узла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Add(Tree* branch,int key,bool flag)
{
    Tree* BrAdd=new Tree();
    BrAdd->key=key;
    if (flag)
    {
        cout<<"Right"<<key<<endl;
        branch->right=BrAdd;
    }
    else
    {
        cout<<"Left"<<key<<endl;
        branch->left=BrAdd;
    }
}
cout для дебага вставлял.
Помогите пожалуйста, укажите ошибку(

Добавлено через 25 минут
Народ, ау помогите плиз(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru