Форум программистов, компьютерный форум 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
07.11.2012, 00:27     Составить поисковое дерево
Цитата Сообщение от bootleanC Посмотреть сообщение
составить поисковое дерево
Цитата Сообщение от bootleanC Посмотреть сообщение
чтобы в верху был наименьший элемент далее с ссылкой на соседние элементы вниз по уровням
рисунок сами делали? вообще в курсе что такое дерево поиска? это не то что вы нарисовали, дерево поиска есть вид упорядоченного массива отличных друг от друга ключей, от меньшего к большему, с лева на право. т.е. самый нижний левый ключ будет наименьшим, выше на ступень чуть больше, на ступень ниже с права, еще чуть выше, на 2 ступени выше еще чуть больше. максимальный элемент это нижний правый. Поиск осуществляется по ключу, на вашем рисунке я аже боюсь представить каким образом будет осуществляться поиск, особенно если учесть что ключи у вас повторяются.

Добавлено через 2 минуты
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
3
4
topr:if(mas1[i]==mas1[i-j])
* * * * * * * * {
* * * * * * * * * * mas1[i] = rand()%901+100;
* * * * * * * * * * goto topr;
* * * * * * * * }
это вообще быдлокод, извиняюсь за выражение, какойто причем тут будет зацикливание ибо ни i ни j с места не сдвигаются

Добавлено через 16 минут
в мэйне же инициализации структуры вообще нет оО
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
for(int i=0;i<n;++i)
* * * * t.pn=t.add_node(mas1[i],t.pn);
вы кстати почему то пихаете постояннно в левую часть дерева
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
3
4
5
if(x<pn->info)
* * * * add_node(x,pn->left);
* * //Добавляем его в левре поддерево, иначе - в правое
* * else
* * * * add_node(x,pn->left);
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
for(int i=0;i<n;++i)
* * * * t.print_sim(t.pn);
зачем вам цикл если у вас есть метод в котором обходятся все ветки дерева?
Цитата Сообщение от bootleanC Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
void tree::print_sim(node*pn)
{
* * //Если левое поддерево существует, то обходим его.
* * if(pn->left)
* * * * print_sim(pn->left);
* * std::cout<<pn->info<<" ";
* * //Попадаем в корень.
* * //Если существует правое поддерево, то обходим и его.
* * if(pn->right)
* * * * print_sim(pn->right);
}
Добавлено через 6 минут
Цитата Сообщение от bootleanC Посмотреть сообщение
когда в этой строке(51) убираешь t.pn= то вообще не запускается...хотя по идее должно быть так...или я просто что то не догоняю
не догоняете функция возвращает указатель на очередную ветку и её куда то нужно присваивать

Добавлено через 1 минуту
кстати отсюда и ошибка вы все время создаете листки и её присваиваете вершине, соответственно у вас вершина получается без детей

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