(*)~reworking this project
This commit is contained in:
52
btree.cpp
52
btree.cpp
@@ -45,13 +45,51 @@ BinaryTree<T> *insert(BinaryTree<T> *tree, T value)
|
||||
*node = insert(*node, value);
|
||||
return tree;
|
||||
}
|
||||
*node = new BinaryTree<T>;
|
||||
(*node)->value = value;
|
||||
(*node)->left = (*node)->right = nullptr;
|
||||
(*node)->compare = tree->compare;
|
||||
*node = new BinaryTree<T>;
|
||||
(*node)->value = value;
|
||||
(*node)->left = nullptr;
|
||||
(*node)->right = nullptr;
|
||||
(*node)->compare = tree->compare;
|
||||
return tree;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void rightRotate(BinaryTree<T> **tree)
|
||||
{
|
||||
auto left = *tree->left;
|
||||
*tree->left = left->right;
|
||||
left->right = *tree;
|
||||
*tree = left;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void leftRotate(BinaryTree<T> **tree)
|
||||
{
|
||||
auto right = (*tree)->right;
|
||||
(*tree)->right = right->left;
|
||||
right->left = *tree;
|
||||
*tree = right;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
std::ostream &operator<<(std::ostream &ostream, const BinaryTree<T> *btree)
|
||||
{
|
||||
if (!btree)
|
||||
return ostream;
|
||||
ostream << btree->value << "(";
|
||||
if (btree->left)
|
||||
ostream << btree->left;
|
||||
if (btree->left && btree->right)
|
||||
ostream << ", ";
|
||||
if (btree->right)
|
||||
ostream << btree->right;
|
||||
ostream << ")";
|
||||
return ostream;
|
||||
}
|
||||
|
||||
void test()
|
||||
{}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
auto tree = new BinaryTree<int>;
|
||||
@@ -69,9 +107,9 @@ int main(void)
|
||||
for (int i = 0; i <= 5; ++i)
|
||||
tree = insert(tree, i * 2);
|
||||
|
||||
std::cout << tree->left->value << ", "
|
||||
<< tree->value << ", "
|
||||
<< tree->right->value << std::endl;
|
||||
leftRotate(&tree);
|
||||
std::cout << tree << std::endl;
|
||||
|
||||
delete tree;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user