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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
DimanShabalin
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 76
#1

Создание прошитого бинарного дерева - C++

11.01.2012, 23:05. Просмотров 1469. Ответов 4
Метки нет (Все метки)

есть файл

fIn.txt
A
BC
D_IF
___L

то есть _ значает что потомка нет (например у B потомок только B, второго нет); , информация может быть какой угодно.
Вопрос КаК построить это дерево если допустим я написал класс
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
struct tree     // структура бинарного дерева
{
    char info;
    struct tree *pLeft;
    struct tree *pRight;
};
class BinaryTree
{   
public:
    tree *pRoot,*pStartLeft,*pStartLeft;
 
    BinaryTree(char ch,  char leftCh, char rightCh);
    ~BinaryTree();
    void pushTreeElement(char ch, char ch1, bool left);
    void deleteBinaryTree(tree *p);
    void printBinaryTree(tree *p, int level);
};
BinaryTree::BinaryTree(char ch,  char leftCh, char rightCh)
{
    tree *tmp, *left, *right;
    tmp   = new tree;
    left  = new tree;
    right = new tree;
 
    tmp->inf    = ch;
    left->inf   = leftCh;
    right->inf  = rightCh;
    tmp->pLeft  = left;
    tmp->pRight = right;
 
    left->pLeft   = NULL;
    left->pRight  = NULL;
    right->pLeft  = NULL;
    right->pRight = NULL;
 
    pRoot = tmp;
}
void BinaryTree::pushTreeElement(????)
{
    
}
незнаю как заполнять бинарное дерево из файла поэтому pushTreeElement
не написал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 23:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание прошитого бинарного дерева (C++):

Создание бинарного дерева из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*& Tree) { Bin q;

Создание бинарного дерева - C++
Есть задания и я знаю как их сделать, но не понимаю, как создать и вывести на экран бинарное дерево. Подскажите пожалуйста, ссылки, коды,...

Создание бинарного дерева поиска - C++
Людииииии помогите пож-таааа.....Нужно создать бинарное дерево поиска, считывая элементы из текст файла.. Очень нужноооо:( кто нибудь:(:(...

Создание строкового калькулятора на основе бинарного дерева - C++
Вот мой исходник. Проблема заключается в том, что не получается разложить строку на операторы с соответствующим приоритетом и операнды,...

Создание бинарного дерева и ограничение на количество узлов в ней - C++
В задании по созданию бинарного дерева есть условие на то, что узлов в дереве должно быть не больше 10. Пробую поставить такое ограничение...

Запись бинарного дерева в файл и восстановление из него этого дерева - C++
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на структуру с данными, 2 и 3й указатель на...

4
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
12.01.2012, 03:31 #2
зависит от задачи. или у вас дерево поиска?
0
DimanShabalin
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 76
12.01.2012, 11:23  [ТС] #3
незнаю как построить , остальную часть задачи сам сделаю
надо пользоваться рекурсией при заполнении дерева?? если да то как, я рекурсию никогда не понимал (
0
vndtta
90 / 67 / 13
Регистрация: 17.10.2011
Сообщений: 235
Завершенные тесты: 1
12.01.2012, 13:42 #4
Цитата Сообщение от DimanShabalin Посмотреть сообщение
есть файл

fIn.txt
A
BC
D_IF
___L

то есть _ значает что потомка нет (например у B потомок только B, второго нет); , информация может быть какой угодно.
...
условие поясни ка поподробнее, а то "___L" вообще непонятно что значит
я насчитал 4 символа, тут должно быть либо 8, либо 6(по два на каждого существующего потомка из предыдущего уровня)

Добавлено через 2 часа 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
35
36
int level=0;
BinaryTree T;
ifstream file;
string s;
int pos;
 
 
void get_level(int level,tree** arg){
 tree* root=*arg;
 
 if (level>0){
  if (!root) return;
  get_level(level-1,&(root.left));
  get_level(level-1,&(root.right));
 }
 else{
  if (pos==s.length()) { return;}
  if (s[pos]=="_") { pos++;return;}
  root=new tree;
  root.info=s[pos++];
  root.left=0;
  root.right=0;
  *arg=root
 }
}
 
main(){
...
 T.pRoot=0;
 while(!file.eof()){
  pos=0;
  getline(file,s);
  get_level(level++,&(T.pRoot));
 }
...
}
вот накорябал после обеда, по идее должно работать
1
DimanShabalin
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 76
13.01.2012, 22:31  [ТС] #5
_L значит нет левого потомка (т.к. надо сделать прошитое дерево следовательно не обязательно должно быть счетное число потомков)
0
13.01.2012, 22:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 22:31
Привет! Вот еще темы с ответами:

Написать шаблон бинарного дерева с функцией распечатки дерева - C++
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

Построение бинарного дерева на основе не бинарного - C++
В лабораторной работе есть такое задание: Создайте процедуру построения бинарного дерева на основе не бинарного. Объясните как вообще...

Вывод бинарного дерева на экран в виде "дерева" - C++
основная задача: подсчет количества листьев. проблема: при просмотре хочу выводить бин. дерево, в красивом виде, возможно использование...

Создание бинарного дерево из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*& Tree) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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