Binary Tree WIP

This commit is contained in:
2019-04-20 22:23:15 +02:00
parent 621c9b2989
commit 30e9dc60b4

View File

@@ -0,0 +1,75 @@
#include <memory>
namespace BinaryTree
{
template<class T>
struct Node
{
Node * parent;
T value;
std::unique_ptr<Node<T>> left;
std::unique_ptr<Node<T>> right;
Node(T const & _value, Node<T> * _parent)
: parent(_parent),
value(_value)
{}
};
template<class T>
class Tree
{
private:
std::unique_ptr<Node<T>> root;
public:
void Insert(T & value)
{
Node<T> * previousPtr = nullptr;
std::unique_ptr<Node<T>> & ptr = root;
while(ptr != nullptr)
{
previousPtr = ptr.get();
if(ptr->value > value)
{
ptr = ptr->left;
}
else
{
ptr = ptr->right;
}
}
ptr = std::make_unique<Node<T>>(value, previousPtr);
}
bool Contains(T const & value)
{
std::unique_ptr<Node<T>> & ptr = root;
while(ptr != nullptr)
{
if(ptr->value == value)
{
return true;
}
if(ptr->value > value)
{
ptr = ptr->left;
}
else
{
ptr = ptr->right;
}
}
return false;
}
void Delete(T const & value)
{
}
};
}