[21/08/04 KATA NINJA] 재귀

NinjaJuunzzi·2021년 8월 3일
0

코드카타

목록 보기
7/36
post-thumbnail

이진트리순회

function solution() {
  const array = [1, 2, 3, 4, 5, 6, 7];

  function Front(cur, visited) {
    if (visited.includes(cur)) return;
    if (!array[cur]) return;
    visited.push(cur);
    // 전위순회 1 2 4 5 3 6 7
    Front(2 * cur + 1, visited);
    // 4 2 5 1 6 3 7 중위순회
    Front(2 * cur + 2, visited);
    // 4 5 2 6 7 3 1 후위순회
    console.log(array[cur]);
  }
  Front(0, []);
}
solution();

이진수 출력하기

  let answer = "";
  function DFS(number) {
    if (number === 0) return;
    DFS(Math.floor(number / 2));
    answer += `${number % 2}`;
  }
  DFS(number);
  return answer;

부분집합구하기

function solution(n) {
  const array = [...new Array(n)].map((_, i) => i + 1);
  function DFS(number, visited) {
    if (number === n+1) {
      console.log(visited);
      return;
    }
    // 호출시의 visited가 복사된다.
    DFS(number + 1, [...visited, number]);
    DFS(number + 1, [...visited]);
  }
  DFS(1, []);
}

console.log(solution(3));
profile
Frontend Ninja

0개의 댓글