💡 Tree
계층적인 구조를 나타내는 비선형 자료구조로 그래프(Graph)의 특수한 형태
트리는 노드(Node)와 간선(Edge)으로 이루어짐
✅ 구현
static class Node {
Object data;
Node left;
Node right;
Node(Object data) {
this.data = data;
this.left = null;
this.right = null;
}
Object getLeft() {
return this.left;
}
Object getRight() {
return this.right;
}
void setLeft(Node newNode) {
this.left = newNode;
}
void setRight(Node newNode) {
this.right = newNode;
}
void addData(Node node, String parent, String left, String right) {
if (node == null)
return;
if (node.data.equals(parent)) {
if (!left.equals(".")) {
node.setLeft(new Node(left));
}
if (!right.equals(".")) {
node.setRight(new Node(right));
}
}
else {
addData(node.left, parent, left, right);
addData(node.right, parent, left, right);
}
}
// 🔥 전위순회 : root > left > right
private static void preOrder(Node node) {
if (node == null)
return;
pre.append(node.data);
preOrder(node.left);
preOrder(node.right);
}
// 🔥 중위선회 : left > root > right
private static void inOrder(Node node) {
if (node == null)
return;
inOrder(node.left);
in.append(node.data);
inOrder(node.right);
}
// 🔥 후위순회 : left > right > root
private static void postOrder(Node node) {
if (node == null)
return;
postOrder(node.left);
postOrder(node.right);
post.append(node.data);
}
}