[Java] Day05 - 클래스
2021-01-30 # Java

Day05 클래스


Before Start


시작하기에 앞서 8주차 인터페이스까지는 성의가 없을(?) 것이다. C++와 비슷한 점이 많을 뿐더러 개념을 다루기에는 시간관리능력이 부족하다. 따라서, 개념을 알고싶은 분들은 각각의 개념을 잘 소개한 글을 링크할테니 참고하면 좋을 것이다.

Review Day04


Q1. queue를 LinkedList 구조체로 사용했을 때, offer, add / poll,remove / peek,element의 차이는?

1
2
boolean offer = queue.offer(1);
boolean add = queue.add(1);

각각 첫번째는 예외를 던지지 않고 두번째는 예외를 던지는 것이다. 중요한 것은 일관성(consistency)이 있게 예외를 던질 것이라면 다 던지고 아니면 다 던지지 말아야하는 것이다.
같은 기능을 가지지만 하나는 null값을, 하나는 에러가 나는것이다. 예시로 들면, peek은 아무것도 없을 때는 null값을 주지만 element는 아무것도 없는데 무엇을 보려는 것이냐는 에러를 던지게 되는 것이다.

Day05. 클래스

클래스란?

클래스를 이해하는데 이 글을 참조하면 좋을 것이다. 나는 “Java의 정석”이라는 책을 통해 따로 공부하고 있는데 블로그 포스팅을 하기에는 벌려 놓은 일이 너무 많다. 따라서 생략하도록 하겠다.
클래스 정의하는 방법, 객체 만드는 방법 (new 키워드 이해하기), 메소드 정의하는 방법, 생성자 정의하는 방법,this 키워드 이해하기는 SKIP..

이진트리(Binary Tree)

int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요.
int value, Node left, right를 가지고 있어야 합니다.
BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요.
DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요.

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
import java.util.LinkedList;
import java.util.Queue;

public class BinarySearchTree {
public static class Node {
private Node left;
private Node right;
private int value;

public Node(int value) {
this.value = value;
this.left = null;
this.right = null;
}

// Define Getter
public Node getLeft() {
return left;
}
public Node getRight() {
return right;
}
public int getValue() {
return value;
}

// Define Setter
public void setLeft(Node left) {
this.left = left;
}
public void setRight(Node right) {
this.right = right;
}
public void setValue(int value){
this.value = value;
}
}

private Node root;

public BinarySearchTree(Node root) {
this.root = root;
}

public Node getRoot() {
return root;
}

public void BFS(Node root) {
Queue<Node> que = new LinkedList<>();
que.offer(root);
while(!que.isEmpty()) {
Node node = que.poll();
System.out.print(node.getValue()+" ");
if(node.getLeft() != null)
que.offer(node.getLeft());
if(node.getRight() != null)
que.offer(node.getRight());
}
System.out.println();
}

// Inorder
public void DFS(Node root) {
if(root == null)
return;
DFS(root.getLeft());
System.out.print(root.getValue()+" ");
DFS(root.getRight());
}
}