0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 14
1

Построить дерево общего вида по строке

06.06.2017, 17:45. Показов 2613. Ответов 2

Господа, есть такое задание: Дана строка, описывающая дерево общего вида. Построить дерево по строке. Для каждого из уровней данного дерева, начиная с уровня 0, вывести сумму значений вершин, находящихся на этом уровне. Считать, что глубина дерева общего вида не превосходит 10. Но проблема в том, что внятных реализаций деревьев общего вида я нигде не нашел. Что то набросал, но я так понимаю, в корне неверно. Не подскажете, где можно почитать про построение деревьев общего вида?
Или был бы очень вам благодарен, если бы вы помогли написать хотя бы набросок самого построения дерева. Код, который я написал, прилагаю, на всякий случай.
P.S. Строки задаются как например 9(8,7,6(5,4),3,2(1)), где в скобках указываются сыновья того элемента, после которого стоят скобки
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include<string>
#include<bits/stdc++.h>
 
using namespace std;
int i;
int sumlvl[10];
string s;
struct Node {
    int key;
    struct Node *son;
    struct Node *brother;
    struct Node *parent;
    int lvl;
};
 
Node *create_tree(int v) {
  Node *Tree;
  Tree->key = v;
  //обнуляем указатели к братьям и сыновьям, независимая вершина, которая хранит value
  Tree->son = NULL;
  Tree->brother = NULL;
  Tree->parent = NULL;
  return Tree;
}
 
Node*create_bro(Node*b, int v){
    Node* bro;
    bro->parent = b->parent;
    bro->brother = NULL;
    bro->son = NULL;
    bro->key = v;
    return bro;
    }
 
Node *create_son(Node* p, int v){
    Node* son;
    son->key = v;
    son->parent = p;
    son->brother = NULL;
    return son;
}
 
Node* making_tree(Node* Root){
    Root = create_tree(int(s[0]));
    i++;
    sumlvl[0]=int(s[0]);
    while(i<s.size()){
        if(s[i]=='('){
            i++;
            /*Node * g1 = create_son(Root, int(s[i]));
            Node* tmp;
            while(s[i]!=')')
                if(s[i]==',')
                    i++;
                if(int(s[i])){
                    tmp = create_bro()
                }*/
           }
    }
 
    return Root;
}
 
int main()
{
    Node* Tree = NULL;
 
    making_tree(Tree);
 
 
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 17:45
Ответы с готовыми решениями:

Дерево общего вида
Задание: Динамическое дерево произвольной размерности(ссылочная часть узла-список) знаю как...

Дерево общего вида (да опять я)
Всеравно неработает уже 2 ночь не сплю. одни проблеммы с етой программой, но что то мне...

Дерево общего вида. Вставить, найти, удалить элемент.
Объясните, пожалуйста, как это реализуется? Простыми словами или кодом. struct Node { int...

Деревья общего вида
Дан указатель P1 на корень непустого дерева общего вида. Вывести значения всех вершин дерева в...

2
"C with Classes"
1581 / 1360 / 511
Регистрация: 16.08.2014
Сообщений: 5,647
Записей в блоге: 1
06.06.2017, 17:52 2
kindOfAnonimous, тут смотрел?, тут
0
0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 14
06.06.2017, 19:31  [ТС] 3
Спасибо, я в курсе, что из себя представляет эта структура, меня интересовала конкретная реализация на с++. Статья с хабра, на мой взгляд, слишком уж скомкана и не до конца освещает реализацию. Впрочем, я уже наколхозил что то близкое к правде, буду смотреть дальше
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2017, 19:31
Помогаю со студенческими работами здесь

Ошибка в функции общего вида
Source.cpp: #include &quot;median.h&quot; #include &lt;vector&gt; #include &lt;iostream&gt; using namespace std;...

Программирование с использованием подпрограмм общего вида
Вот эта задача: Заданы матрицы A= (i=1, 2, 3; j=1, 2, 3), B= (i=1, 2, 3; j=1, 2, 3), то есть...

Создание итератора для дерева общего вида
Возникла такая проблема: надо сделать итератор для дерева общего вида. Я не знаю, как его лучше...

Объект общего вида (Object) в консольном приложении
Всем привет. Не смог понять одной вещи: есть ли возможность создать функцию с аргументом типа...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru