๐ ๋ฌธ์ ๋งํฌ
๐ ํ์ด ๊ณผ์
- ์ด์ง ํธ๋ฆฌ์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
์ ํ์
ํ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค.
- tree์ node ๋ชจ๋ ๋ด๋ถ ํด๋์ค๋ก ๊ตฌํํ์์ต๋๋ค.
- ๊ฐ ์ฃผ์ ๋ณ๋ก ๋ฉ์๋์ ๋ํด ์ค๋ช
์ ์ถ๊ฐํ์ต๋๋ค.
๐ป ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Tree tree = new Tree();
for(int i = 0; i< n; i++){
char[] data;
data = br.readLine().replaceAll(" ","").toCharArray();
tree.createNode(data[0],data[1],data[2]);
}
tree.preOrder(tree.root);
System.out.println();
tree.inOrder(tree.root);
System.out.println();
tree.postOrder(tree.root);
System.out.println();
}
static class Node{
char data;
Node left;
Node right;
Node(char data){
this.data = data;
}
}
static class Tree{
Node root;
public void createNode(char data, char leftData, char rightData){
if(root == null){ // ์๋ฌด๊ฒ๋ ์๋ ์ด๊ธฐ ์ํ
root = new Node(data);
if(leftData != '.'){ // '.'๋ ์์ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
root.left = new Node(leftData);
}
if(rightData != '.'){
root.right = new Node(rightData);
}
}else{ // ์ด๊ธฐ ์ํ๊ฐ ์๋๋ผ๋ฉด ์ด๋์ ๋ค์ด๊ฐ์ผํ ์ง ์ฐพ์์ผ ํ๋ค.
searchNode(root,data,leftData,rightData);
}
}
public void searchNode(Node root, char data, char leftData, char rightData){
if(root == null){ // ๋์ฐฉํ ๋
ธ๋๊ฐ null์ด๋ฉด ์ฌ๊ท ์ข
๋ฃ
return;
}else if(root.data == data){ // ๋ค์ด๊ฐ ์์น๋ฅผ ์ฐพ์๋ค๋ฉด
if(leftData != '.'){ // ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ข์ฐ ๋
ธ๋ ์์ฑ
root.left = new Node(leftData);
}
if(rightData != '.'){
root.right = new Node(rightData);
}
}else { // ์์ง ์ฐพ์ง ๋ชปํ๊ณ ํ์ํ ๋
ธ๋๊ฐ ๋จ์์๋ค๋ฉด
searchNode(root.left,data,leftData,rightData);
searchNode(root.right,data,leftData,rightData);
}
}
public void preOrder(Node root){
System.out.print(root.data);
if(root.left != null){
preOrder(root.left);
}
if(root.right != null){
preOrder(root.right);
}
} // ์ ์ ์ํ : ๋ฃจํธ -> ์ข -> ์ฐ
public void inOrder(Node root){
if(root.left != null){
inOrder(root.left);
}
System.out.print(root.data);
if(root.right != null){
inOrder(root.right);
}
} // ์ค์ ์ํ : ์ข -> ๋ฃจํธ -> ์ฐ
public void postOrder(Node root){
if(root.left != null){
postOrder(root.left);
}
if(root.right != null){
postOrder(root.right);
}
System.out.print(root.data);
}
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 15686๋ฒ : ์นํจ ๋ฐฐ๋ฌ (Java) (0) | 2022.03.22 |
---|---|
๋ฐฑ์ค 16953๋ฒ : A -> B (Java) (0) | 2022.03.22 |
๋ฐฑ์ค 11725๋ฒ : ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (Java) (0) | 2022.02.12 |
๋ฐฑ์ค 1753๋ฒ : ์ต๋จ๊ฒฝ๋ก (Java) (0) | 2022.02.12 |
๋ฐฑ์ค 2206๋ฒ : ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (Java) (0) | 2022.02.12 |