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

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

Восстановить пароль Регистрация
 
SMYH
 Аватар для SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
21.04.2014, 18:07     Добавление элемента в двоичное дерево #1
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, по задумке, должна случайно добавлять элемент в дерево. Для этого она случайно "шагает" от корня дерева, выбирая один из двух узлов, пока не найдет узел, указатель на который равен нулю. Затем выделяется память под этот узел, после этого значение указателя должно указывать на этот узел, но этого не происходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 18:07     Добавление элемента в двоичное дерево
Посмотрите здесь:

Дерево поиска. добавление элемента C++
C++ Двоичное дерево
C++ Двоичное дерево
C++ Двоичное дерево
двоичное дерево C++
Бинарное дерево поиска (удаление, добавление элемента) C++
Двоичное дерево C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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