[Algorithm] 이진트리순회 (깊이우선탐색) (javaScript)

swing·2023년 7월 28일
0

[Algorithm]

목록 보기
86/96

문제

아래 그림과 같은 이진트리를 전위순회와 후위순회를 연습해보세요.
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
profile
if(기록📝) 성장🌱

0개의 댓글