diff --git a/01-tree_successor/cpp/tree_successor_more_tests.cpp b/01-tree_successor/cpp/tree_successor_more_tests.cpp
deleted file mode 100644
index 552762a5202ca4e15ca7d2dede05ec15447ef4df..0000000000000000000000000000000000000000
--- a/01-tree_successor/cpp/tree_successor_more_tests.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <algorithm>
-#include <functional>
-#include <cstdint>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "tree_successor.h"
-
-using namespace std;
-
-// If the condition is not true, report an error and halt.
-#define EXPECT(condition, message) do { if (!(condition)) expect_failed(message); } while (0)
-void expect_failed(const string& message);
-
-void test(const vector<int>& sequence, Tree &tree) {
-    Node* node = tree.successor(nullptr);
-    for (const auto& element : sequence) {
-        EXPECT(node, "Expected successor " + to_string(element) + ", got nullptr");
-        EXPECT(node->key == element,
-               "Expected successor " + to_string(element) + ", got " + to_string(node->key));
-        node = tree.successor(node);
-    }
-    EXPECT(!node, "Expected no successor, got " + to_string(node->key));
-}
-
-vector<int> get_linear_sequence() {
-    vector<int> numbers;
-    for (int i = 0; i < 10000000; i++)
-        numbers.push_back((int)(7.13*i));
-    return numbers;
-}
-
-void test_path(bool right) {
-    vector<int> numbers = get_linear_sequence();
-    Tree tree;
-    Node *node = nullptr;
-    if (right)
-        for (int key : numbers)
-            node = tree.insert(key, node);
-    else
-        for (int index = numbers.size() - 1; index >= 0; --index)
-            node = tree.insert(numbers[index], node);
-
-    test(numbers, tree);
-}
-
-void test_two_paths() {
-    vector<int> numbers = get_linear_sequence();
-    Tree tree;
-    Node *node = nullptr;
-    for(size_t i = numbers.size()/2; i < numbers.size(); i++)
-        node = tree.insert(numbers[i], node);
-    node = nullptr;
-    for(int i = numbers.size()/2 - 1; i >= 0; i--)
-        node = tree.insert(numbers[i], node);
-
-    test(numbers, tree);
-}
-
-void test_sequence(vector<int> &&sequence) {
-    Tree tree;
-    for (const auto& element : sequence)
-        tree.insert(element);
-
-    sort(sequence.begin(), sequence.end());
-    test(sequence, tree);
-}
-
-void test_random() {
-    vector<int> sequence = {997};
-    for (int i = 2; i < 199999; i++)
-        sequence.push_back((sequence.back() * int64_t(997)) % 199999);
-    test_sequence(move(sequence));
-}
-
-void test_trivial() {
-    test_sequence({5});
-    test_sequence({7,9});
-    test_sequence({7,3});
-    test_sequence({5,3,7});
-}
-
-void test_comb() {
-    vector<int> numbers = get_linear_sequence();
-    Tree tree;
-    Node *node = nullptr;
-    for(size_t i = numbers.size()/2; i < numbers.size(); i++)
-        node = tree.insert(numbers[i], node);
-    node = nullptr;
-    for(int i = numbers.size()/2 - 1; i >= 0; i-=2) {
-        node = tree.insert(numbers[i-1], node);
-        tree.insert(numbers[i], node);
-    }
-    test(numbers, tree);
-}
-
-vector<pair<string, function<void()>>> tests = {
-    { "trivial", test_trivial },
-    { "right_path", []{ test_path(true); } },
-    { "left_path", []{ test_path(false); } },
-    { "random_tree", test_random },
-    { "two_paths", test_two_paths },
-    { "comb", test_comb }
-};
diff --git a/01-tree_successor/cpp/tree_successor_test.cpp b/01-tree_successor/cpp/tree_successor_test.cpp
index d26af4d1597e94f1b372c7fb23b66a984178e781..552762a5202ca4e15ca7d2dede05ec15447ef4df 100644
--- a/01-tree_successor/cpp/tree_successor_test.cpp
+++ b/01-tree_successor/cpp/tree_successor_test.cpp
@@ -24,11 +24,15 @@ void test(const vector<int>& sequence, Tree &tree) {
     EXPECT(!node, "Expected no successor, got " + to_string(node->key));
 }
 
-void test_path(bool right) {
+vector<int> get_linear_sequence() {
     vector<int> numbers;
     for (int i = 0; i < 10000000; i++)
         numbers.push_back((int)(7.13*i));
+    return numbers;
+}
 
+void test_path(bool right) {
+    vector<int> numbers = get_linear_sequence();
     Tree tree;
     Node *node = nullptr;
     if (right)
@@ -41,11 +45,20 @@ void test_path(bool right) {
     test(numbers, tree);
 }
 
-void test_random() {
-    vector<int> sequence = {997};
-    for (int i = 2; i < 199999; i++)
-        sequence.push_back((sequence.back() * int64_t(997)) % 199999);
+void test_two_paths() {
+    vector<int> numbers = get_linear_sequence();
+    Tree tree;
+    Node *node = nullptr;
+    for(size_t i = numbers.size()/2; i < numbers.size(); i++)
+        node = tree.insert(numbers[i], node);
+    node = nullptr;
+    for(int i = numbers.size()/2 - 1; i >= 0; i--)
+        node = tree.insert(numbers[i], node);
+
+    test(numbers, tree);
+}
 
+void test_sequence(vector<int> &&sequence) {
     Tree tree;
     for (const auto& element : sequence)
         tree.insert(element);
@@ -54,8 +67,39 @@ void test_random() {
     test(sequence, tree);
 }
 
+void test_random() {
+    vector<int> sequence = {997};
+    for (int i = 2; i < 199999; i++)
+        sequence.push_back((sequence.back() * int64_t(997)) % 199999);
+    test_sequence(move(sequence));
+}
+
+void test_trivial() {
+    test_sequence({5});
+    test_sequence({7,9});
+    test_sequence({7,3});
+    test_sequence({5,3,7});
+}
+
+void test_comb() {
+    vector<int> numbers = get_linear_sequence();
+    Tree tree;
+    Node *node = nullptr;
+    for(size_t i = numbers.size()/2; i < numbers.size(); i++)
+        node = tree.insert(numbers[i], node);
+    node = nullptr;
+    for(int i = numbers.size()/2 - 1; i >= 0; i-=2) {
+        node = tree.insert(numbers[i-1], node);
+        tree.insert(numbers[i], node);
+    }
+    test(numbers, tree);
+}
+
 vector<pair<string, function<void()>>> tests = {
+    { "trivial", test_trivial },
     { "right_path", []{ test_path(true); } },
     { "left_path", []{ test_path(false); } },
-    {"random_tree", test_random },
+    { "random_tree", test_random },
+    { "two_paths", test_two_paths },
+    { "comb", test_comb }
 };
diff --git a/01-tree_successor/python/tree_successor_more_tests.py b/01-tree_successor/python/tree_successor_more_tests.py
deleted file mode 100644
index 3415b8ff688ca141584343c5639bd1b905313614..0000000000000000000000000000000000000000
--- a/01-tree_successor/python/tree_successor_more_tests.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python3
-import sys
-
-from tree_successor import Tree
-
-def test_tree(tree, sequence):
-    node = tree.successor(None)
-    for element in sequence:
-        assert node is not None, "Expected successor {}, got None".format(element)
-        assert node.key == element, "Expected successor {}, got {}".format(element, node.key)
-        node = tree.successor(node)
-    assert node is None, "Expected no successor, got {}".format(node.key)
-
-def test_sequence(sequence):
-    tree = Tree()
-    for i in sequence:
-        tree.insert(i)
-    sequence.sort()
-    test_tree(tree, sequence)
-
-def test_trivial_tree():
-    test_sequence([5])
-    test_sequence([7,9])
-    test_sequence([7,3])
-    test_sequence([5,3,7])
-
-def test_random_tree():
-    test_sequence([pow(997, i, 199999) for i in range(1, 199999)])
-
-def test_path(right):
-    sequence = [int(7.13*i) for i in range(1000000)]
-    tree = Tree()
-    node = None
-    sequence_insert = sequence if right else reversed(sequence)
-    for key in sequence_insert:
-        node = tree.insert(key, node)
-    test_tree(tree, sequence)
-
-def test_two_paths():
-    sequence_left = [int(7.13*i) for i in range(1000000)]
-    sequence_right = [int(7.13*i) for i in range(1000000, 2000000)]
-    tree = Tree()
-    node = None
-    for key in sequence_right:
-        node = tree.insert(key, node)
-    node = None
-    for key in reversed(sequence_left):
-        node = tree.insert(key, node)
-    test_tree(tree, sequence_left + sequence_right)
-
-def test_comb():
-    sequence = [int(7.13*i) for i in range(1000000)]
-    tree = Tree()
-    node = None
-    for i in range(len(sequence)//2, len(sequence)):
-        node = tree.insert(sequence[i], node)
-    node = None
-    for i in range(len(sequence)//2-1, 0, -2):
-        node = tree.insert(sequence[i-1], node)
-        tree.insert(sequence[i], node)
-    test_tree(tree, sequence)
-
-tests = [
-    ("trivial", test_trivial_tree),
-    ("random_tree", test_random_tree),
-    ("right_path", lambda: test_path(True)),
-    ("left_path", lambda: test_path(False)),
-    ("two_paths", test_two_paths),
-    ("comb", test_comb),
-]
-
-if __name__ == "__main__":
-    for required_test in sys.argv[1:] or [name for name, _ in tests]:
-        for name, test in tests:
-            if name == required_test:
-                print("Running test {}".format(name), file=sys.stderr)
-                test()
-                break
-        else:
-            raise ValueError("Unknown test {}".format(name))
diff --git a/01-tree_successor/python/tree_successor_test.py b/01-tree_successor/python/tree_successor_test.py
index db3df552d74e918fbe90c30e34e07af82926405e..3415b8ff688ca141584343c5639bd1b905313614 100644
--- a/01-tree_successor/python/tree_successor_test.py
+++ b/01-tree_successor/python/tree_successor_test.py
@@ -11,14 +11,22 @@ def test_tree(tree, sequence):
         node = tree.successor(node)
     assert node is None, "Expected no successor, got {}".format(node.key)
 
-def test_random_tree():
-    sequence = [pow(997, i, 199999) for i in range(1, 199999)]
+def test_sequence(sequence):
     tree = Tree()
     for i in sequence:
         tree.insert(i)
     sequence.sort()
     test_tree(tree, sequence)
 
+def test_trivial_tree():
+    test_sequence([5])
+    test_sequence([7,9])
+    test_sequence([7,3])
+    test_sequence([5,3,7])
+
+def test_random_tree():
+    test_sequence([pow(997, i, 199999) for i in range(1, 199999)])
+
 def test_path(right):
     sequence = [int(7.13*i) for i in range(1000000)]
     tree = Tree()
@@ -28,10 +36,37 @@ def test_path(right):
         node = tree.insert(key, node)
     test_tree(tree, sequence)
 
+def test_two_paths():
+    sequence_left = [int(7.13*i) for i in range(1000000)]
+    sequence_right = [int(7.13*i) for i in range(1000000, 2000000)]
+    tree = Tree()
+    node = None
+    for key in sequence_right:
+        node = tree.insert(key, node)
+    node = None
+    for key in reversed(sequence_left):
+        node = tree.insert(key, node)
+    test_tree(tree, sequence_left + sequence_right)
+
+def test_comb():
+    sequence = [int(7.13*i) for i in range(1000000)]
+    tree = Tree()
+    node = None
+    for i in range(len(sequence)//2, len(sequence)):
+        node = tree.insert(sequence[i], node)
+    node = None
+    for i in range(len(sequence)//2-1, 0, -2):
+        node = tree.insert(sequence[i-1], node)
+        tree.insert(sequence[i], node)
+    test_tree(tree, sequence)
+
 tests = [
+    ("trivial", test_trivial_tree),
     ("random_tree", test_random_tree),
     ("right_path", lambda: test_path(True)),
     ("left_path", lambda: test_path(False)),
+    ("two_paths", test_two_paths),
+    ("comb", test_comb),
 ]
 
 if __name__ == "__main__":
diff --git a/01-tree_successor/task.md b/01-tree_successor/task.md
index 05441acee07c6327e088f9e133d5e98dcdc280ec..ec268c46e235ad886e1f3171e7188b97f0acbe3c 100644
--- a/01-tree_successor/task.md
+++ b/01-tree_successor/task.md
@@ -15,7 +15,3 @@ You should submit the file `tree_successor.*` (but not the
 `tree_successor_test.*`).
 
 Source code templates can be found in [the git repository](https://gitlab.kam.mff.cuni.cz/datovky/assignments/-/tree/master).
-
-Files tree_successor_more_tests.{cpp,py} contain additional tests
-for bugs discovered in students' solutions. They are not included on
-recodex, but your program should pass them in few seconds.