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

Составить поисковое дерево - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ итераторы вектора http://www.cyberforum.ru/cpp-beginners/thread690176.html
#include <tchar.h> #include <iostream> #include <vector> using namespace std; int _tmain(int argc, _TCHAR* argv) { vector <int> a; vector <int>::iterator cur; int itemp; int i;
C++ пропукае ввод строки Почему в этой программе пропускает ввод строки? gets(s); #include <iostream> #include <string.h> #include <conio.h> #include <stdio.h> const int n=10; http://www.cyberforum.ru/cpp-beginners/thread690157.html
C++ Заменить в строке все вхождения abc на 123
Попросили сделать простейшую программку (по информатике), вроде как шарю, но сейчас просто не могу понять, что происходит и почему не работает, перепробовал уже вариантов 10, ничего не помогает. Возникают различные ошибки. Исходное задание: считать строку и заменить все вхождения abc на 123. В коде ниже не считывается переменная строки scanf'ом. #include "stdafx.h" #include <string.h>...
Заполнить массив следующим образом C++
Помогите (очень нужно) на завтра. Создать одномерный массив (можно на 10 элементов) и заполнить его следующим образом: 1, 2, 1, 2, 1, 2 ... и так далее. Элементы массива не вводить а все сделать в коде программе.
C++ Раздвинуть заданный текст, вставив заданную последовательность http://www.cyberforum.ru/cpp-beginners/thread690138.html
Раздвинуть заданный текст, вставив заданную последовательность после i-го символа каждого слова.
C++ Найти в массиве все повторяющиеся последовательности Создать программу, которая вводит c клавиатуры массив целых чисел, находит в нем все повторяющиеся последовательности (1 1, 2 2 2 и т.д.) и заменяет каждую из них на два элемента: повторяющееся число и длину последовательности. Выдать результирующую последовательность и пары "длина - число последовательностей данной длины" вход: 1 1 1 2 2 2 2 3 4 4 4 5 5 5 выход: 1 3 2 4 3 4 3 5 3 1 - 1 2 -... подробнее

Показать сообщение отдельно
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
08.11.2012, 08:19     Составить поисковое дерево
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
goto topr;
использование этого оператора это 95% то что программист что-то криво сделал и вставил костыль.
и вообще использование его является по большей части плохим тоном, нас обычно за такое преподы линейкой по рукам били, не в прямом смысле конечно, но все же =)
далее, я вам дал подсказку что при создании вы все время вставляете элементы в левую часть будь то она больше или меньше предыдущей это раз

Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
tree::node *tree::add_node(int x,node *pn)
{
* * node *ptr=pn;
* * //Если дерево не существует, то созаем его.
* * if(pn==NULL) return new_node(x);
* * //Если добавляемое значение меньше информационного поля узла, то
* * if(x<pn->info)
* * * * add_node(x,pn->left);
* * //Добавляем его в левре поддерево, иначе - в правое
* * else
* * * * add_node(x,pn->left);
* * return ptr;
}
увидел где ваша инициализация идет
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
}t;
так делать плохо, просто ; ставите в мэйне прописываете вот это

C++
1
2
3
tree t;
//или 
tree *t=new tree;
будет опять же правильнее в смысле хорошего тона программирования
еще одна подсказка
Цитата Сообщение от MrGrig Посмотреть сообщение
вы все время создаете листки и её присваиваете вершине, соответственно у вас вершина получается без детей
у вас получается при создании очередного листка все что создано было ранее теряется

Добавлено через 13 минут
добавление нового листка лучше делать функцией типа bool.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool add(node* pn, int key, int data){ //где key это оригинальный ключ по которому вы вставляете, а data значение которое нужно вставить
    if(pn->key==key){
        cout<<"Ключ уже есть в дереве вставка невозможна";
        return false;
    }
    if(pn!=NULL)
        if(pn->key>key)
            add(pn->right,key,data);
        else
            add(pn->left,key,data);
    else{
        pn->key=key;
        pn->data=data;
        pn->left=pn->right=NULL;
        return true;
    }
}
Добавлено через 2 минуты
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
3
4
private: struct node{
    int info;
    node *left, *right;
};
соответственно структура должна быть такая
C++
1
2
3
4
5
private: struct node{
    int key;
    int data;
    node *left, *right;
};
 
Текущее время: 07:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru