/*
(1)
↙ ↘
(2) (3)
↙ ↘
(4) (5)
Inorder (Left, Root, Right): 4 2 5 1 3
Preorder (Root, Left, Right): 1 2 4 5 3
Postorder (Left, Right, Root): 4 5 2 3 1
*/
class Node{
int data;
Node left;
Node right;
}
class Tree {
public Node root;
public void setRoot(Node node) {
this.root = node;
}
public Node getRoot() {
return root;
}
public Node makeNode(Node left, int data, Node right) {
Node node = new Node();
node.data = data;
node.left = left;
node.right = right;
return node;
}
public void inorder(Node node){
if(node != null) {
inorder(node.left);
System.out.println(node.data);
inorder(node.right);
}
}
public void preorder(Node node){
if(node != null) {
System.out.println(node.data);
preorder(node.left);
preorder(node.right);
}
}
public void postorder(Node node){
if(node != null) {
postorder(node.left);
postorder(node.right);
System.out.println(node.data);
}
}
public class Test {
public static void main(String[] args){
Tree t = new Tree();
//마지막 노드부터 생성한다
Node n4 = t.makeNode(null, 4, null);
Node n5 = t.makeNode(null, 5, null);
Node n2 = t.makeNode(n4, 2, n5);
Node n3 = t.makeNode(null, 3, null);
Node n1 = t.makeNode(n2, 3, n3);
t.setRoot(n1);
t.preorder(t.getRoot());
}
}
}
'Algorithm' 카테고리의 다른 글
프로그래머스 lv1_정수 제곱근 판별_JAVA (0) | 2022.10.18 |
---|---|
프로그래머스 lv1_평균구하기_JAVA (0) | 2022.10.18 |
피보나치 재귀(메모리제이션) (0) | 2022.10.12 |
이진수 출력(재귀) (0) | 2022.10.11 |
재귀함수(스택프레임) (0) | 2022.10.10 |