아래 그림과 같은 이진트리를 전위순회와 후위순회를 연습해보세요.
1
/ \
2 3
/ \ / \
4 5 6 7
전위순회 출력 : 1 2 4 5 3 6 7
중위순회 출력 : 4 2 5 1 6 3 7
후위순회 출력 : 4 5 2 6 7 3 1
// 전위순회
const preorder = (vertex) => {
let answer = "";
const dfs = (vertex) => {
if (vertex > 7) return;
else {
answer += vertex + " ";
dfs(vertex * 2);
dfs(vertex * 2 + 1);
}
};
dfs(vertex);
return answer;
};
// 중위순회
const inorder = (vertex) => {
let answer = "";
const dfs = (vertex) => {
if (vertex > 7) return;
else {
dfs(vertex * 2);
answer += vertex + " ";
dfs(vertex * 2 + 1);
}
};
dfs(vertex);
return answer;
};
// 후위순회
const postorder = (vertex) => {
let answer = "";
const dfs = (vertex) => {
if (vertex > 7) return;
else {
dfs(vertex * 2);
dfs(vertex * 2 + 1);
answer += vertex + " ";
}
};
dfs(vertex);
return answer;
};
const preOrderTraverse = preorder(1);
const inOrderTraverse = inorder(1);
const postOrderTraverse = postorder(1);
console.log(preOrderTraverse); // 1 2 4 5 3 6 7
console.log(inOrderTraverse); // 4 2 5 1 6 3 7
console.log(postOrderTraverse); // 4 5 2 6 7 3 1