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

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

Восстановить пароль Регистрация
 
Ronin Mcreal
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 1
27.04.2014, 23:35     Бинарное дерево #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;
    }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2014, 23:35     Бинарное дерево
Посмотрите здесь:

Бинарное дерево C++
C++ Бинарное дерево
бинарное дерево C++
Бинарное дерево C++
Бинарное дерево C++
C++ Дерево бинарное
C++ Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой
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);
        }
    }
.....
Yandex
Объявления
25.05.2014, 12:01     Бинарное дерево
Ответ Создать тему
Опции темы

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