Skip to content
Snippets Groups Projects
Commit 3f24bc38 authored by Jirka Fink's avatar Jirka Fink
Browse files

Splay operation: One test is improved

parent ff52d832
Branches
No related tags found
No related merge requests found
...@@ -107,7 +107,7 @@ class TestSplay { ...@@ -107,7 +107,7 @@ class TestSplay {
} }
}; };
const int elements = 5000000; const int elements = 5000000; // Must be even!
void test_lookup() { void test_lookup() {
// Insert even numbers // Insert even numbers
...@@ -200,14 +200,16 @@ void test_remove() { ...@@ -200,14 +200,16 @@ void test_remove() {
tree.remove(0); tree.remove(0);
} }
{ {
Node *node = nullptr; Node *left_subtree = nullptr, *right_subtree = nullptr;
for (int i = 1; i < elements; i++) for (int i = elements/2-1; i >= 0; i--) {
node = new Node(i, nullptr, node, nullptr); left_subtree = new Node(i, nullptr, nullptr, left_subtree);
node = new Node(0, nullptr, nullptr, node); right_subtree = new Node(elements-i, nullptr, right_subtree, nullptr);
Tree tree(node); }
Node *root = new Node(elements/2, nullptr, left_subtree, right_subtree);
Tree tree(root);
for (int i = 1; i < elements; i++) while(tree.root)
tree.remove(i); tree.remove(tree.root->key);
} }
} }
......
...@@ -97,7 +97,7 @@ def test_insert(): ...@@ -97,7 +97,7 @@ def test_insert():
assert flatten(tree) == sorted(sequence), "Incorrect tree after a sequence of inserts" assert flatten(tree) == sorted(sequence), "Incorrect tree after a sequence of inserts"
# Test speed # Test speed
elements = 200000 elements = 200000 # Must be even!
tree = Tree() tree = Tree()
for elem in range(elements): for elem in range(elements):
for _ in range(10): for _ in range(10):
...@@ -141,13 +141,14 @@ def test_remove(): ...@@ -141,13 +141,14 @@ def test_remove():
for elem in range(elements): for elem in range(elements):
tree.remove(0) tree.remove(0)
node = None left_subtree = right_subtree = None
for i in range(1, elements): for i in reversed(range(0, elements//2)):
node = Node(i, None, node, None) left_subtree = Node(i, right=left_subtree)
node = Node(0, None, None, node) right_subtree = Node(elements-i, left=right_subtree)
node = Node(elements//2, left=left_subtree, right=right_subtree)
tree = Tree(node) tree = Tree(node)
for i in range(1, elements): while tree.root is not None:
tree.remove(i) tree.remove(tree.root.key)
tests = [ tests = [
("splay", test_splay), ("splay", test_splay),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment