Leetcode 104 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 node.

Input: root = [3,9,20,null,null,15,7]
Output: 3
Input: root = [1,null,2]
Output: 2
Input: root = []
Output: 0
Input: root = [0]
Output: 1
  • Burada bizden ağaçtakı en uzun dalın derinliğini sormaktadır.
  • DFS yaklaşımı ile bu soruyu çözebiliriz.
  • Temel kontrollerimiz şunlardır. Eğer node boş ise derinlik sıfırdır.Node var ama node un sağ ve sol child ları boş ise derinliği 1 olarak kabul ederiz.
  • Eğer bu iki durum dışında yani sağ ve sol child varsa aynı kontrolleri onlar içinde yaparak recursive şekilde maxDepth fonksiyonunu çağırırız.
  • Burada dikkat edilmesi gereken recursive çağrılar sırasında elimizdeki node un derinliğini hesaplarken sağ ve sol child lardan derinliği daha büyük olanı seçer daha sonra buna 1 ekleriz.
    def maxDepth(self, root: TreeNode) -> int:
        if(root is None):
            return 0
        if(root.left is None and  root.right is None):
            return 1
        
        left = self.maxDepth(root.left)
        right = self.maxDepth(root.right)

        return max(left,right)+1