Skip to content

Commit 0374180

Browse files
authored
Merge pull request #29 from Data-Structure-Study/yoonexample
이진 트리 구현까지 완료
2 parents 7df2174 + 725aaa4 commit 0374180

File tree

3 files changed

+128
-0
lines changed

3 files changed

+128
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package tree.binarytree;
2+
3+
/**
4+
* Tree 자료구조의 ADT, 인터페이스이자 Node의 인터페이스
5+
*
6+
* @param <E> 데이터의 파라미터 타입
7+
* @author dion
8+
*/
9+
public interface BinaryTreeNode<E> {
10+
11+
/**
12+
* 해당 노드에 저장된 데이터를 반환합니다.
13+
*
14+
* @return 저장된 데이터
15+
*/
16+
E getData();
17+
18+
/**
19+
* 해당 노드의 왼쪽 서브트리를 반환합니다.
20+
*
21+
* @return 왼쪽 서브트리
22+
*/
23+
BinaryTreeNode<E> getLeftSubTree();
24+
25+
/**
26+
* 왼쪽 서브트리를 등록합니다.
27+
*
28+
* @param subTree 대상이 될 노드
29+
*/
30+
void setLeftSubTree(BinaryTreeNode<E> subTree);
31+
32+
/**
33+
* 해당 노드의 오른쪽 서브트리를 반환합니다.
34+
*
35+
* @return 오른쪽 서브트리
36+
*/
37+
BinaryTreeNode<E> getRightSubTree();
38+
39+
/**
40+
* 오른쪽 서브트리를 등록합니다.
41+
*
42+
* @param subTree 대상이 될 노드
43+
*/
44+
void setRightSubTree(BinaryTreeNode<E> subTree);
45+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package tree.binarytree;
2+
3+
public class BinaryTreeNodeImpl<E> implements BinaryTreeNode<E> {
4+
5+
private final E data;
6+
private BinaryTreeNode<E> left;
7+
private BinaryTreeNode<E> right;
8+
9+
public BinaryTreeNodeImpl(E data) {
10+
this.data = data;
11+
}
12+
13+
@Override
14+
public E getData() {
15+
return this.data;
16+
}
17+
18+
@Override
19+
public BinaryTreeNode<E> getLeftSubTree() {
20+
return this.left;
21+
}
22+
23+
@Override
24+
public void setLeftSubTree(BinaryTreeNode<E> subTree) {
25+
this.left = subTree;
26+
}
27+
28+
@Override
29+
public BinaryTreeNode<E> getRightSubTree() {
30+
return this.right;
31+
}
32+
33+
@Override
34+
public void setRightSubTree(BinaryTreeNode<E> subTree) {
35+
this.right = subTree;
36+
}
37+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package tree.binarytree;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import org.junit.jupiter.api.DisplayName;
6+
import org.junit.jupiter.api.Test;
7+
8+
class BinaryTreeNodeTest {
9+
10+
@Test
11+
@DisplayName("이진_트리_생성_및_초기화_테스트")
12+
void 이진_트리_생성_및_초기화_테스트() {
13+
BinaryTreeNode<Integer> bt = new BinaryTreeNodeImpl<>(1);
14+
15+
assertThat(bt).isNotNull();
16+
assertThat(bt.getData()).isEqualTo(1);
17+
assertThat(bt.getLeftSubTree()).isNull();
18+
assertThat(bt.getRightSubTree()).isNull();
19+
}
20+
21+
@Test
22+
@DisplayName("이진_트리_저장_및_출력_테스트")
23+
void 이진_트리_저장_및_출력_테스트() {
24+
BinaryTreeNode<Integer> bt1 = new BinaryTreeNodeImpl<>(1);
25+
BinaryTreeNode<Integer> bt2 = new BinaryTreeNodeImpl<>(2);
26+
BinaryTreeNode<Integer> bt3 = new BinaryTreeNodeImpl<>(3);
27+
BinaryTreeNode<Integer> bt4 = new BinaryTreeNodeImpl<>(4);
28+
29+
bt1.setLeftSubTree(bt2);
30+
bt1.setRightSubTree(bt3);
31+
bt2.setLeftSubTree(bt4);
32+
33+
assertThat(bt1).isNotNull();
34+
assertThat(bt2).isNotNull();
35+
assertThat(bt3).isNotNull();
36+
assertThat(bt4).isNotNull();
37+
assertThat(bt1.getData()).isEqualTo(1);
38+
assertThat(bt2.getData()).isEqualTo(2);
39+
assertThat(bt3.getData()).isEqualTo(3);
40+
assertThat(bt4.getData()).isEqualTo(4);
41+
assertThat(bt1.getLeftSubTree().getData()).isEqualTo(2);
42+
assertThat(bt1.getRightSubTree().getData()).isEqualTo(3);
43+
assertThat(bt1.getLeftSubTree().getLeftSubTree().getData()).isEqualTo(4);
44+
assertThat(bt1.getLeftSubTree().getRightSubTree()).isNull();
45+
}
46+
}

0 commit comments

Comments
 (0)