[LeetCode]Maximum Depth of Binary Tree

2023. 4. 3. 18:50·SW개발/코딩테스트

https://leetcode.com/problems/maximum-depth-of-binary-tree/

 

Maximum Depth of Binary Tree - LeetCode

Can you solve this real interview question? Maximum Depth of Binary Tree - Given the root of a binary tree, return its maximum depth. A binary tree's maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf

leetcode.com

 

문제 분석

트리에서 가장 긴 depth 값을 구하는 문제, 즉 트리의 레벨을 구하는 문제입니다.

 

처음 시도한 답안 

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        def get_tree_level(root):
            if root is None:
                return 0
            # return max(get_tree_level(root.left), get_tree_level(root.right)) + 1 도 가능
            return max(get_tree_level(root.left) + 1, get_tree_level(root.right) + 1)
        
        return get_tree_level(root)

접근 방법

  1. 루트 노드가 존재하지 않다면 트리의 레벨은 0 입니다.
  2. 트리의 왼쪽 노드들의 레벨과 트리의 오른쪽 노드들의 레벨을 구해 큰 값을 레벨로 설정합니다.
  3. 이 때, 함수가 1번 호출될때마다 값을 1 증가시켜 레벨을 구합니다.

root = [3, 9, 2, null, null, 15, 7]의 Input 값을 가지고 어떻게 값이 바뀌는지 확인해보겠습니다.

(함수 호출시의 값은 루트 노드의 val로 칭하겠습니다.)

1. get_tree_level(3)
2. max(get_tree_level(9) + 1, get_tree_level(20) + 1)
3. max(
       max(get_tree_level(None) + 1, get_tree_level(None) + 1) + 1,
       max(get_tree_level(15) + 1, get_tree_level(7) + 1 )) +1,
   )
4. max(
       max(get_tree_level(None) + 1, get_tree_level(None) + 1) + 1,
       max(
           max(get_tree_level(None) + 1, get_tree_level(None) + 1) + 1,
           max(get_tree_level(None) + 1, get_tree_level(None) + 1) + 1,
       ) + 1,
   )
5. max(
       max(get_tree_level(None) + 1, get_tree_level(None) + 1) + 1,
       max(
           max(0 + 1, 0 + 1) + 1,
           max(0 + 1, 0 + 1) + 1,
       ) + 1,
   )
6. max(
       max(0 + 1, 0 + 1) + 1,
       max(2, 2) + 1,
   )
7. max(2, 3)
8. return 3

 

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[LeetCode]Add Two Numbers  (0) 2023.04.05
[LeetCode]Pascal's Triangle  (0) 2023.04.04
[LeetCode]Search Insert Position  (0) 2023.04.02
[LeetCode]Symmetric Tree  (0) 2023.04.02
[LeetCode]Binary Tree Inorder Traversal  (0) 2023.03.22
'SW개발/코딩테스트' 카테고리의 다른 글
  • [LeetCode]Add Two Numbers
  • [LeetCode]Pascal's Triangle
  • [LeetCode]Search Insert Position
  • [LeetCode]Symmetric Tree
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • SW개발 (303)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (1)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배달비 공유
    django
    Contributor
    컨트리뷰터
    트리 #AVL #알고리즘 #자료구조
    g
    오픈소스
    배공파용
    라이프 스타일
    음식
    배달
    플레이스토어
    어플리케이션
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[LeetCode]Maximum Depth of Binary Tree
상단으로

티스토리툴바