|
1 | 1 | # These tests are auto-generated with test data from: |
2 | 2 | # https://github.com/exercism/problem-specifications/tree/main/exercises/satellite/canonical-data.json |
3 | | -# File last updated on 2023-07-19 |
| 3 | +# File last updated on 2025-12-30 |
4 | 4 |
|
5 | 5 | import unittest |
6 | 6 |
|
@@ -67,3 +67,56 @@ def test_reject_traversals_with_repeated_items(self): |
67 | 67 | tree_from_traversals(preorder, inorder) |
68 | 68 | self.assertEqual(type(err.exception), ValueError) |
69 | 69 | self.assertEqual(err.exception.args[0], "traversals must contain unique items") |
| 70 | + |
| 71 | + def test_a_degenerate_binary_tree(self): |
| 72 | + preorder = ["a", "b", "c", "d"] |
| 73 | + inorder = ["d", "c", "b", "a"] |
| 74 | + |
| 75 | + expected = { |
| 76 | + "v": "a", |
| 77 | + "l": { |
| 78 | + "v": "b", |
| 79 | + "l": {"v": "c", "l": {"v": "d", "l": {}, "r": {}}, "r": {}}, |
| 80 | + "r": {}, |
| 81 | + }, |
| 82 | + "r": {}, |
| 83 | + } |
| 84 | + self.assertEqual(tree_from_traversals(preorder, inorder), expected) |
| 85 | + |
| 86 | + def test_another_degenerate_binary_tree(self): |
| 87 | + preorder = ["a", "b", "c", "d"] |
| 88 | + inorder = ["a", "b", "c", "d"] |
| 89 | + |
| 90 | + expected = { |
| 91 | + "v": "a", |
| 92 | + "l": {}, |
| 93 | + "r": { |
| 94 | + "v": "b", |
| 95 | + "l": {}, |
| 96 | + "r": {"v": "c", "l": {}, "r": {"v": "d", "l": {}, "r": {}}}, |
| 97 | + }, |
| 98 | + } |
| 99 | + self.assertEqual(tree_from_traversals(preorder, inorder), expected) |
| 100 | + |
| 101 | + def test_tree_with_many_more_items(self): |
| 102 | + preorder = ["a", "b", "d", "g", "h", "c", "e", "f", "i"] |
| 103 | + inorder = ["g", "d", "h", "b", "a", "e", "c", "i", "f"] |
| 104 | + |
| 105 | + expected = { |
| 106 | + "v": "a", |
| 107 | + "l": { |
| 108 | + "v": "b", |
| 109 | + "l": { |
| 110 | + "v": "d", |
| 111 | + "l": {"v": "g", "l": {}, "r": {}}, |
| 112 | + "r": {"v": "h", "l": {}, "r": {}}, |
| 113 | + }, |
| 114 | + "r": {}, |
| 115 | + }, |
| 116 | + "r": { |
| 117 | + "v": "c", |
| 118 | + "l": {"v": "e", "l": {}, "r": {}}, |
| 119 | + "r": {"v": "f", "l": {"v": "i", "l": {}, "r": {}}, "r": {}}, |
| 120 | + }, |
| 121 | + } |
| 122 | + self.assertEqual(tree_from_traversals(preorder, inorder), expected) |
0 commit comments