Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
#1

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

21.04.2014, 18:07. Просмотров 214. Ответов 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
Ответы с готовыми решениями:

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

Добавление элемента в бинарное дерево
Добрый вечер, помогите написать метод добавления в бинарное дерево. Я написал...

Дерево поиска. добавление элемента
Привет. Поясните кое что с деревом. Допустим есть класс class bst { ...

Добавление элемента в обычное бинарное дерево
Доброго времени суток, форумчане! Начинаю реализовывать бинарное дерево...

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

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

Добавление нового элемента в бинарное дерево поиска с вспомогательной функцией(без рекурсии)
с реализацией этой функции с рекурсией проблем нету.но без нее уже...

Двоичное дерево
Помогите пожалуйста построить двоичное дерево и найти в нём длину...

Двоичное дерево
Помогите найти ошибку, в консоль вообще ничего не выводится:...


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

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

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