Skip to main content
deleted 7 characters in body; edited title
Source Link
Jamal
  • 35.2k
  • 13
  • 134
  • 238

c++ Binary C++ binary search tree

I am learning c++C++ and today I've implemented a version of the Binarybinary search tree,. I would like your thoughts about it.

c++ Binary search tree

I am learning c++ and today I've implemented a version of the Binary search tree, I would like your thoughts about it.

C++ binary search tree

I am learning C++ and today I've implemented a version of the binary search tree. I would like your thoughts about it.

Source Link
Alberto89
  • 165
  • 1
  • 4

c++ Binary search tree

I am learning c++ and today I've implemented a version of the Binary search tree, I would like your thoughts about it.

node.h

#pragma once

struct Node
{
   int val;
   Node *left;
   Node *right;
};

bTree.h

#include "node.h"

#pragma once

class BTree
{
private:

    Node *root;
    void addValue(int n, Node *node);
    void traverse(Node *node);
    Node* search(int n, Node *node);
    
public:

    BTree();

    void addValue(int n);
    void traverse();
    void search(int n);
};

bTree.cpp

#include <iostream>
#include "bTree.h"

BTree::BTree()
{
    root = nullptr;
}

void BTree::addValue(int n, Node *node) {
    if (n < node->val)
    {
        if (node->left != nullptr)
        {
            addValue(n, node->left);
        }
        else
        {
            node->left = new Node;
            node->left->val = n;
            node->left->left = nullptr;
            node->left->right = nullptr;
        }
    }
    else if (n >= node->val)
    {
        if (node->right != nullptr)
        {
            addValue(n, node->right);
        }
        else
        {
            node->right = new Node;
            node->right->val = n;
            node->right->left = nullptr;
            node->right->right = nullptr;
        }

    }
}

void BTree::traverse(Node *node) {
    if (node->left != nullptr)
        traverse(node->left);
    std::cout << node->val << ' ';
    if (node->right != nullptr)
        traverse(node->right);
}

Node* BTree::search(int n, Node *node) {
    if (node != nullptr)
    {
        if (node->val == n)
            return node;
        else if (n < node->val)
            return search(n, node->left);
        else if (n > node->val)
            return search(n, node->right);
    }
    else
        return nullptr;
}

void BTree::addValue(int n) {
    if (root == nullptr)
    {
        root = new Node;
        root->val = n;
        root->left = nullptr;
        root->right = nullptr;
    }
    else
    {
        addValue(n, root);
    }
}

void BTree::traverse() {
    if (root == nullptr)
    {
        std::cout << "No nodes in the tree" << std::endl;
    }
    else
    {
        traverse(root);
    }
}
void BTree::search(int n) {
    if (root == nullptr)
    {
        std::cout << "No nodes in the tree" << std::endl;
    }
    else
    {
        if (search(n, root))
            std::cout << n << " found" << std::endl;
        else
            std::cout << n << " not found" << std::endl;
    }
}

main.cpp

#include <iostream>
#include "bTree.h"
#include <ctime>

int main()
{
    srand(static_cast<unsigned int>(time(0)));
    rand();

    BTree bTree{};

    for (int i = 0; i < 50; i++)
    {
        int n = rand() % 100;
        std::cout << n  << ' ';
        bTree.addValue(n);
    }

    std::cout << std::endl << std::endl;

    bTree.traverse();

    std::cout << std::endl << std::endl;

    for (int i = 0; i < 10; i++)
    {
        int n = rand() % 100;
        bTree.search(n);
    }

    std::cout << std::endl << std::endl;

    system("pause");

    return 0;
}