|
2 | 2 | import static org.assertj.core.api.Assertions.assertThatExceptionOfType; |
3 | 3 |
|
4 | 4 | import java.util.List; |
| 5 | + |
5 | 6 | import org.junit.jupiter.api.Disabled; |
6 | 7 | import org.junit.jupiter.api.DisplayName; |
7 | 8 | import org.junit.jupiter.api.Test; |
@@ -86,4 +87,46 @@ public void rejectTraversalsWithRepeatedItems() { |
86 | 87 | .isThrownBy(() -> satellite.treeFromTraversals(preorder, inorder)) |
87 | 88 | .withMessage("traversals must contain unique items"); |
88 | 89 | } |
| 90 | + |
| 91 | + @Disabled("Remove to run test") |
| 92 | + @Test |
| 93 | + @DisplayName("A degenerate binary tree") |
| 94 | + public void degenerateBinaryTree() { |
| 95 | + List<Character> preorder = List.of('a', 'b', 'c', 'd'); |
| 96 | + List<Character> inorder = List.of('d', 'c', 'b', 'a'); |
| 97 | + |
| 98 | + Tree tree = satellite.treeFromTraversals(preorder, inorder); |
| 99 | + |
| 100 | + assertThat(tree.preorder()).containsExactlyElementsOf(preorder); |
| 101 | + assertThat(tree.inorder()).containsExactlyElementsOf(inorder); |
| 102 | + assertThat(tree.postorder()).containsExactly('d', 'c', 'b', 'a'); |
| 103 | + } |
| 104 | + |
| 105 | + @Disabled("Remove to run test") |
| 106 | + @Test |
| 107 | + @DisplayName("Another degenerate binary tree") |
| 108 | + public void anotherDegenerateBinaryTree() { |
| 109 | + List<Character> preorder = List.of('a', 'b', 'c', 'd'); |
| 110 | + List<Character> inorder = List.of('a', 'b', 'c', 'd'); |
| 111 | + |
| 112 | + Tree tree = satellite.treeFromTraversals(preorder, inorder); |
| 113 | + |
| 114 | + assertThat(tree.preorder()).containsExactlyElementsOf(preorder); |
| 115 | + assertThat(tree.inorder()).containsExactlyElementsOf(inorder); |
| 116 | + assertThat(tree.postorder()).containsExactly('d', 'c', 'b', 'a'); |
| 117 | + } |
| 118 | + |
| 119 | + @Disabled("Remove to run test") |
| 120 | + @Test |
| 121 | + @DisplayName("Tree with many more items") |
| 122 | + public void treeWithManyMoreItems() { |
| 123 | + List<Character> preorder = List.of('a', 'b', 'd', 'g', 'h', 'c', 'e', 'f', 'i'); |
| 124 | + List<Character> inorder = List.of('g', 'd', 'h', 'b', 'a', 'e', 'c', 'i', 'f'); |
| 125 | + |
| 126 | + Tree tree = satellite.treeFromTraversals(preorder, inorder); |
| 127 | + |
| 128 | + assertThat(tree.preorder()).containsExactlyElementsOf(preorder); |
| 129 | + assertThat(tree.inorder()).containsExactlyElementsOf(inorder); |
| 130 | + assertThat(tree.postorder()).containsExactly('g', 'h', 'd', 'b', 'e', 'i', 'f', 'c', 'a'); |
| 131 | + } |
89 | 132 | } |
0 commit comments