(btree)+constructor for structure, cleaned up some code
Might as well use C++ features if I've got them
This commit is contained in:
30
btree.cpp
30
btree.cpp
@@ -18,6 +18,14 @@ struct BinaryTree
|
|||||||
T value;
|
T value;
|
||||||
BinaryTree<T> *left, *right;
|
BinaryTree<T> *left, *right;
|
||||||
enum Order (*compare)(T, T);
|
enum Order (*compare)(T, T);
|
||||||
|
BinaryTree(T val, BinaryTree<T> *l, BinaryTree<T> *r, enum Order (*cmp)(T, T))
|
||||||
|
{
|
||||||
|
value = val;
|
||||||
|
left = l;
|
||||||
|
right = r;
|
||||||
|
compare = cmp;
|
||||||
|
}
|
||||||
|
|
||||||
~BinaryTree()
|
~BinaryTree()
|
||||||
{
|
{
|
||||||
delete left;
|
delete left;
|
||||||
@@ -39,17 +47,8 @@ BinaryTree<T> *insert(BinaryTree<T> *tree, T value)
|
|||||||
node = &tree->right;
|
node = &tree->right;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*node = *node ? insert(*node, value)
|
||||||
if (*node)
|
: new BinaryTree<T>(value, nullptr, nullptr, tree->compare);
|
||||||
{
|
|
||||||
*node = insert(*node, value);
|
|
||||||
return tree;
|
|
||||||
}
|
|
||||||
*node = new BinaryTree<T>;
|
|
||||||
(*node)->value = value;
|
|
||||||
(*node)->left = nullptr;
|
|
||||||
(*node)->right = nullptr;
|
|
||||||
(*node)->compare = tree->compare;
|
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,14 +86,9 @@ std::ostream &operator<<(std::ostream &ostream, const BinaryTree<T> *btree)
|
|||||||
return ostream;
|
return ostream;
|
||||||
}
|
}
|
||||||
|
|
||||||
void test()
|
|
||||||
{}
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
auto tree = new BinaryTree<int>;
|
auto cmp = [](int x, int y)
|
||||||
tree->value = 5;
|
|
||||||
tree->compare = [](int x, int y)
|
|
||||||
{
|
{
|
||||||
if (x < y)
|
if (x < y)
|
||||||
return LT;
|
return LT;
|
||||||
@@ -103,7 +97,7 @@ int main(void)
|
|||||||
else
|
else
|
||||||
return EQ;
|
return EQ;
|
||||||
};
|
};
|
||||||
|
auto tree = new BinaryTree<int>(5, NULL, NULL, cmp);
|
||||||
for (int i = 0; i <= 5; ++i)
|
for (int i = 0; i <= 5; ++i)
|
||||||
tree = insert(tree, i * 2);
|
tree = insert(tree, i * 2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user