프로그래밍-학습기록/코딩테스트

리트코드(LeetCode): 104. Maximum Depth of Binary Tree

leesche 2021. 5. 6. 13:01

이진 트리의 최대 깊이 구하기

문제 설명

  • 이진 트리의 최대 깊이를 구하는 문제다.

해결 과정

  • 처음엔 전역에 depth 변수를 선언하고 자식 노드가 있을 때마다 depth를 추가하는 재귀 함수를 작성했지만 잘 되지 않았다. 한 쪽 노드의 양쪽 자식 노드가 null일 때 다른 쪽을 판단하지 못하고 리턴되는 것이 문제였다.
  • 그래서 끙끙 머리를 싸매다가 검색으로 해당 문제에 관한 글을 읽었다. 다루기 힘든 어려운 큰 문제를 다루기 쉬운 작은 문제로 나눠서 해결하는 재귀 방법을 소개하고 있었다. 바로 차용해봤다!
  • 좀 더 끈기 있게 붙잡고 있었으면 풀 수 있었을까? 의문이 든 문제.

소스 코드

var maxDepth = function (root) {
  if (!root) {
    return 0;
  }

  return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
};

참고 자료 및 출처