-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBinaryTreeTest.java
141 lines (106 loc) · 3.89 KB
/
BinaryTreeTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package week5;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
class BinaryTreeTest {
@Test
void insert() throws Exception {
BinaryTree bTree = new BinaryTree();
bTree.insertNode(10); //첫번째 넣는 값은 root노드의 value가 됨
bTree.insertNode(5);
bTree.insertNode(15);
assertThat(bTree.getRoot().getLeft().getValue()).isEqualTo(5);
assertThat(bTree.getRoot().getRight().getValue()).isEqualTo(15);
}
@Test
@DisplayName("삭제할 노드가 자식이 없는경우")
void delete_version1() throws Exception {
BinaryTree bTree = new BinaryTree();
bTree.insertNode(24); //첫번째 넣는 값은 root노드의 value가 됨
bTree.insertNode(16);
bTree.insertNode(32);
bTree.insertNode(11);
bTree.insertNode(21);
bTree.insertNode(27);
bTree.deleteNode(21);
assertThat(bTree.getRoot().getLeft().getRight()).isNull();
}
@Test
@DisplayName("삭제할 노드가 자식이 1개인 경우")
void delete_version2() throws Exception {
BinaryTree bTree = new BinaryTree();
bTree.insertNode(24); //첫번째 넣는 값은 root노드의 value가 됨
bTree.insertNode(16);
bTree.insertNode(32);
bTree.insertNode(11);
bTree.insertNode(21);
bTree.insertNode(27);
bTree.deleteNode(32);
assertThat(bTree.getRoot().getRight().getValue()).isEqualTo(32);
}
@Test
@DisplayName("삭제할 노드가 자식이 2개인 경우")
void delete_version3() throws Exception {
BinaryTree bTree = new BinaryTree();
bTree.insertNode(24); //첫번째 넣는 값은 root노드의 value가 됨
bTree.insertNode(16);
bTree.insertNode(32);
bTree.insertNode(11);
bTree.insertNode(21);
bTree.insertNode(27);
bTree.deleteNode(24);
assertThat(bTree.getRoot().getValue()).isEqualTo(21);
}
@Test
void 순회_검사() throws Exception {
BinaryTree bTree = new BinaryTree();
bTree.insertNode(10);
bTree.insertNode(5);
bTree.insertNode(3);
bTree.insertNode(6);
bTree.insertNode(15);
bTree.insertNode(13);
bTree.insertNode(11);
bTree.insertNode(14);
bTree.insertNode(16);
assertThat(bTree.preOrderPrint()).hasToString("10 -> 5 -> 3 -> 6 -> 15 -> 13 -> 11 -> 14 -> 16 -> 종료");
assertThat(bTree.inOrderPrint()).hasToString("3 -> 5 -> 6 -> 10 -> 11 -> 13 -> 14 -> 15 -> 16 -> 종료");
assertThat(bTree.postOrderPrint()).hasToString("3 -> 6 -> 5 -> 11 -> 14 -> 13 -> 16 -> 15 -> 10 -> 종료");
}
@Test
void bfs() throws Exception {
BinaryTree bTree = new BinaryTree();
Node node = new Node(6);
bTree.insertNode(10);
bTree.insertNode(5);
bTree.insertNode(3);
bTree.insertNode(6);
bTree.insertNode(15);
bTree.insertNode(13);
bTree.insertNode(11);
bTree.insertNode(14);
bTree.insertNode(16);
System.out.print("BFS탐색 = ");
assertThat(bTree.bfs(node)).isEqualTo(6);
}
@Test
void dfs() throws Exception {
BinaryTree bTree = new BinaryTree();
Node node = new Node(6);
bTree.insertNode(10);
bTree.insertNode(5);
bTree.insertNode(3);
bTree.insertNode(6);
bTree.insertNode(15);
bTree.insertNode(13);
bTree.insertNode(11);
bTree.insertNode(14);
bTree.insertNode(16);
System.out.print("DFS탐색 = ");
assertThat(bTree.dfs(node)).isEqualTo(6);
}
}