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

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

Войти
Регистрация
Восстановить пароль
 
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
#1

Добавление элемента в двоичное дерево - C++

21.04.2014, 18:07. Просмотров 197. Ответов 0
Метки нет (Все метки)

bt.h
Кликните здесь для просмотра всего текста
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
#include <cstdlib>
#pragma once
 
class TreeNode{
    friend class SimpleTree;
    int data;
    TreeNode* left;
    TreeNode* right;
public:
    TreeNode(int value);
    ~TreeNode();
};
 
class SimpleTree{
private:
    void out(TreeNode* imRoot, int depth);
    void addio(TreeNode* imRoot, const int& value);
    TreeNode* root;
    
public:
    SimpleTree(int value);
    ~SimpleTree();
    void addRandomly(int value);
    void addInOrder(int value);
    void printOnSide();
};


bt.cpp
Кликните здесь для просмотра всего текста
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
#include "bt.h"
#include <cstdlib>
#include <iostream>
#include <ctime>
 
using std::cout;
using std::rand;
using std::srand;
using std::ctime;
using std::endl;
TreeNode::TreeNode(int value):
    data(value),
    left(NULL),
    right(NULL){}
 
TreeNode::~TreeNode(){
    if(left){
        delete left;
    }
    if(right){
        delete right;
    }
}
 
SimpleTree::SimpleTree(int value){
    root = new TreeNode(value);
}
 
SimpleTree::~SimpleTree(){
    if(root) delete root;
}
 
void SimpleTree::addRandomly(int value){
    bool headAndTail = rand()%2;
    TreeNode* newNode = new TreeNode(value);
 
    TreeNode* tmp = root;
 
    while(tmp!=NULL){
        headAndTail = rand()%2;
        if(headAndTail){
            tmp = tmp->left;
        }
        else{
            tmp = tmp->right;
        }
    }
    tmp = newNode;
}
 
void SimpleTree::printOnSide(){
    out(root,0);
}
 
void SimpleTree::out(TreeNode* imRoot, int depth){
    if(imRoot){
        out(imRoot->left, depth+1);
        for(int i = 0; i<depth;i++) cout<<" ";
        cout<<imRoot->data<<endl;
        out(imRoot->right, depth+1);
    }
}


Функция addRandomly() из SimpleTree, по задумке, должна случайно добавлять элемент в дерево. Для этого она случайно "шагает" от корня дерева, выбирая один из двух узлов, пока не найдет узел, указатель на который равен нулю. Затем выделяется память под этот узел, после этого значение указателя должно указывать на этот узел, но этого не происходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление элемента в двоичное дерево (C++):

N дерево, добавление элемента - C++
Добрый вечер, не могу нормально написать добавление узла в дереве. Несколько вариантов пробовал, ни один не сработал, это последний. Где...

Добавление элемента в бинарное дерево - C++
Добрый вечер, помогите написать метод добавления в бинарное дерево. Я написал вот такой код: class word_translate { private: char...

Дерево поиска. добавление элемента - C++
Привет. Поясните кое что с деревом. Допустим есть класс class bst { public: bst(): root(NULL) {} virtual...

Бинарное дерево поиска (удаление, добавление элемента) - C++
Задачи В Бинарном дереве поиска 1)введено с клавиатуры значение, если существует узел с таким значением, он удаляется; 2) с...

Добавление нового элемента в бинарное дерево поиска с вспомогательной функцией(без рекурсии) - C++
с реализацией этой функции с рекурсией проблем нету.но без нее уже по-сложнее(.есть функция иbool Add(int) определенная в классе Дерева,и в...

Двоичное дерево - C++
Помогите пожалуйста построить двоичное дерево и найти в нём длину пути(количество ветвей от корня) до минимального элемента

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 18:07
Привет! Вот еще темы с ответами:

Двоичное дерево - C++
Помогите найти ошибку, в консоль вообще ничего не выводится: #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;fstream&gt; using...

Двоичное дерево - C++
Здравствуйте! Помоги задачу решить! Сразу говорю: это не от лени, нам просто мало объясняют! Хотя бы направление дайте, подсказку...Прогу...

Двоичное дерево Хаффмана - C++
Дана некоторая последовательность данных...(то есть набор каких то значений)...этот набор представляет из себя набор конечных потомков...

Двоичное дерево поиска - C++
Даны 2 вершины дерева .Для каждой из данных вершины вывести ее уровень или информацию что такой вершины нет Подскажите как...


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

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

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