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

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

Войти
Регистрация
Восстановить пароль
 
Ronin Mcreal
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 1
#1

Бинарное дерево - C++

27.04.2014, 23:35. Просмотров 548. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста с программой. Нужно сделать обход, слева и справа(функции get_left и get_right), желательно обход в глубину. И реализовать «подъем» на верхний уровень(функция root), т.е. получение корня.


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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#pragma once
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class Dt
{
private: 
    Dt *up, *left, *right;
    int x;
public:
    Dt* add_left(int x)
    {
        if(left) delete left;
        Dt* dd = new Dt(x);
        left = dd;
        return left;
    }
    Dt* add_right(int x)
    {
        if(right) delete right;
        Dt* dd = new Dt(x);
        right = dd;
        return right;
    }
    
    
    //Dt* get_left()//получение эль-та справа ...                      
    void get_left(Dt *p, int level)
    {
        if(p)
        {
          get_left (p->left, level + 1);
        }
    }
    
    
    //Dt* get_rigt()
    void get_right (Dt *p, int level)
    {
        if(p)
        {
          get_right (p->left, level + 1);
        }
    }
    
    
    Dt* root()
    {
    }
    void insert(int x)
    {
        Dt *cc = this;
 
    }
    void set_x(int x)
    {
        if(x < Dt dt) add_left( x, Dt dt)//если Х меньше чем семечко(уходим влево)
    
        {
            Dt dt = new Dt(x);
            Dt dt->l = NULL;
            Dt dt->r = NULL;
            Dt dt-> x = x;
        }
        
        
        if(x > Dt dt) add_right( x, Dt dt)//если Х меньше чем семечко(уходим вправо)
        
        {
            Dt dt = new Dt(x);
            Dt dt->l = NULL;
            Dt dt->r = NULL;
            Dt dt-> x = x;*/
    }
    void print()
    {
        if(left) left->print();
        cout<<x<<" ";
        if (right) right->print();
    }
    Dt(void)
    { up=NULL;
        left=NULL;
        right=NULL;
    }
    Dt(int x)
    {
        up=NULL;
        left=NULL;
        right=NULL;
        this->x = x;
    }
    ~Dt(void)
    {
        delete left; 
        delete right;
    }
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2014, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бинарное дерево (C++):

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру - C++
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру. вот...

Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой - C++
Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой.

Бинарное дерево - C++
Объясните пжлст почему не работает программа...при вводе файла пишет -842150451 /*Дан адрес P1 вершины дерева — записи типа TNode, ...

Бинарное дерево - C++
Здравствуйте, Корень создаёться вот так TREE *root=NULL; непонятно почему функия добовления использует указатель на указатель ...

Бинарное дерево - C++
Необходимо построить бинарное дерево с методами inorder_tree_walk, tree_search, tree_minimum, tree_successor, tree_insert и tree_delete....

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Inn@
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 6
25.05.2014, 12:01 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.....
void Post_Order(Tree*Node)//обратный обход дерева
    {
        if (Node != NULL)
        {
            Post_Order(Node->left);
            Post_Order(Node->right);
            printf("%ed", Node->Data);
        }
    }
    void Order(Tree*Node)//симетрический проход дерева
    {
        if (Node != NULL)
        {
            Post_Order(Node->left);
            printf("%3ld", Node->Data);
            Post_Order(Node->right);
        }
    }
.....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2014, 12:01
Привет! Вот еще темы с ответами:

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

Бинарное дерево - C++
Народ помогите. На С++ нада написать программу бинарного дерева Требования: 1. В программе должен быть шаблонный класс (template...

Бинарное дерево - C++
Нужно записать в дерево и вывести в форматированном виде каталог файлов(типа windows) на вход даны имена файлов вида c:\win\1 ...

Бинарное дерево - C++
Как организовать вывод бинарного дерева?


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

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

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