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

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

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

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
не написал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 23:05     создание прошитого бинарного дерева
Посмотрите здесь:

Прошивка бинарного дерева на С++ C++
Копирование бинарного дерева C++
C++ Вывод бинарного дерева
Создание бинарного дерева поиска C++
Создание бинарного дерева C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
12.01.2012, 03:31     создание прошитого бинарного дерева #2
зависит от задачи. или у вас дерево поиска?
DimanShabalin
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 76
12.01.2012, 11:23  [ТС]     создание прошитого бинарного дерева #3
незнаю как построить , остальную часть задачи сам сделаю
надо пользоваться рекурсией при заполнении дерева?? если да то как, я рекурсию никогда не понимал (
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 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));
 }
...
}
вот накорябал после обеда, по идее должно работать
DimanShabalin
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 76
13.01.2012, 22:31  [ТС]     создание прошитого бинарного дерева #5
_L значит нет левого потомка (т.к. надо сделать прошитое дерево следовательно не обязательно должно быть счетное число потомков)
Yandex
Объявления
13.01.2012, 22:31     создание прошитого бинарного дерева
Ответ Создать тему
Опции темы

Текущее время: 18:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru