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

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

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

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

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

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

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

Шаблон бинарного дерева - C++
Здравствуйте. Есть одна проблема и не получается её решить, надеюсь вы поможите. Делаю шаблон бинарного дерева. По сути сделал только...

Высота бинарного дерева - C++
Надо найти высоту бинарного дерева.

Копирование бинарного дерева - C++
Имеется бинарное дерево типа class TreeNode { public: TreeNode(); //конструктор virtual ~TreeNode(); //деструктор ...

Прошивка бинарного дерева на С++ - C++
Уважаемые программисты! Может у кого то есть опыт по написанию программы по прошивке бинарного дерева на С++ или подскажет по какому...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
583 / 521 / 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
89 / 66 / 13
Регистрация: 17.10.2011
Сообщений: 229
Завершенные тесты: 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));
 }
...
}
вот накорябал после обеда, по идее должно работать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 22:31     Создание прошитого бинарного дерева
Еще ссылки по теме:

Запись бинарного дерева - C++
Всем привет! Нужно записать следующий массив (вверху картинки) в бинарное дерево, которое имеет структуру, которая на картинке во...

Балансировка бинарного дерева - C++
Попалась одна на вид простая задача. Код написал, но не проходит 10 тестов из 40. Лидеру команды "Отбой" на День Рождения подарили...

Шаблонный класс бинарного дерева - C++
всем привет, возник такой вопрос вот есть шаблонный класс бинарного дерева поиска, задается тип ключа и тип данных. есть метод, который...

Запись бинарного дерева в массив - C++
Как можно записать элементы бинарного дерева в массив? Пробовал одну очень странную идею: void run(Tree *root){ if(root){ ...

Использование целочисленного бинарного дерева - C++
Всем привет. Снова проблема с задачей, помогите пожалуйста. Дано целочисленное бинарное дерево. Найти: а) глубину дерева - ...

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


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

Или воспользуйтесь поиском по форуму:
DimanShabalin
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 76
13.01.2012, 22:31  [ТС]     Создание прошитого бинарного дерева #5
_L значит нет левого потомка (т.к. надо сделать прошитое дерево следовательно не обязательно должно быть счетное число потомков)
Yandex
Объявления
13.01.2012, 22:31     Создание прошитого бинарного дерева
Ответ Создать тему
Опции темы

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