Leetcode 110 Balanced Binary Tree

Soru

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as:

a binary tree in which the left and right subtrees of every node differ in height by no more than 1.

Örnek 1

image
Input: root = [3,9,20,null,null,15,7]
Output: true

Örnek 2

image
Input: root = [1,2,2,3,3,null,null,4,4]
Output: false

Örnek 3

Input: root = []
Output: true

Çözüm

  • LeetCode 110. Balanced Binary Tree sorusunu biliyorum! Bu problem, bir ikili ağacın dengeli (balanced) olup olmadığını belirlememizi istiyor.
  • Girdi: Bir ikili ağacın kök düğümü (root).
  • Çıktı: Eğer ağaç dengeli ise True, değilse False döndür.
  • Bir ikili ağaç şu koşulu sağlıyorsa dengeli (balanced) kabul edilir: Her düğüm için sol ve sağ alt ağaçların maksimum derinlik farkı en fazla 1 olmalıdır.
  • Bu soruyu DFS (derinlik öncelikli arama) kullanarak çözebiliriz.Her düğüm için sol ve sağ alt ağaçların derinliğini hesaplarız ve farkı kontrol ederiz.
  • Çözüm Açıklaması
  • DFS kullanarak her düğüm için derinlik hesaplanır.
  • Alt ağaçlardan biri dengesizse, -1 döndürülerek yukarıya iletilir.
  • Her düğümde sol ve sağ derinlik farkı hesaplanır.
  • Eğer |left - right| > 1 ise dengesizdir ve -1 döndürülür.
  • DFS çağrısı bittiğinde, -1 döndürülmemişse ağaç dengelidir.

Code

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def isBalanced(self, root: TreeNode) -> bool:
        def dfs(node):
            if not node:
                return 0
            
            left = dfs(node.left)
            right = dfs(node.right)

            # Eğer bir alt ağaç dengesizse, -1 döndürerek dengesizliği yukarı ilet
            if left == -1 or right == -1 or abs(left - right) > 1:
                return -1
            
            return max(left, right) + 1
        
        return dfs(root) != -1

Complexity

  • Time complexity (Zaman Karmaşıklığı) : O(n) → Her düğüm bir kez ziyaret edilir.
  • Space complexity (Alan Karmaşıklığı):
    • Dengeli ağaçta O(log n) → Özyineleme derinliği ağacın yüksekliği kadardır.
    • Dengesiz ağaçta O(n) → Kötü durumda (tek taraflı ağaç) derinlik n olabilir.