Bir binary tree'nin maksimum derinliğini (yüksekliğini) bulan fonksiyonu yazın.

Cevap

Bir düğümün derinliği = 1 + max(sol alt ağacın derinliği, sağ alt ağacın derinliği). Boş ağacın derinliği 0'dır. Bu, ağaç sorularının en temel özyineleme kalıbıdır.

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

def max_depth(root):
    if root is None:
        return 0
    return 1 + max(max_depth(root.left), max_depth(root.right))

İteratif (BFS) çözüm

Seviye seviye gezip kaç seviye olduğunu sayarız; çok derin (dengesiz) ağaçlarda stack taşmasını önler.

from collections import deque

def max_depth_bfs(root):
    if not root:
        return 0
    q, depth = deque([root]), 0
    while q:
        depth += 1
        for _ in range(len(q)):
            node = q.popleft()
            if node.left:
                q.append(node.left)
            if node.right:
                q.append(node.right)
    return depth

Karmaşıklık

  • Zaman: O(n), her düğüm bir kez ziyaret edilir.
  • Bellek: özyinelemede O(h) (h = yükseklik; dengeli ağaçta O(log n), zincir şeklinde O(n)), BFS'te en geniş seviye kadar O(w).

Aynı kalıbı kullanan sorular

  • Minimum derinlik (dikkat: yalnızca yaprağa kadar olan yollar sayılır).
  • Balanced Binary Tree: her düğümde sol ve sağ yükseklik farkı en fazla 1 mi?
  • Diameter of Binary Tree: her düğümde sol + sağ yüksekliği hesaplayıp maksimumu tutmak.
  1. Binary search'ün zaman karmaşıklığı nedir ve neden?KolayAlgoritmalar & Veri YapılarıYazılım Müh.
  2. Two Sum: toplamı hedefe eşit olan iki elemanın indekslerini bulun.KolayAlgoritmalar & Veri YapılarıYazılım Müh.
  3. Bir parantez dizisinin geçerli olup olmadığını kontrol edin: "({[]})"KolayAlgoritmalar & Veri YapılarıYazılım Müh.
  4. Tek yönlü bağlı listeyi ters çevirin.OrtaAlgoritmalar & Veri YapılarıYazılım Müh.
  5. BFS ve DFS arasındaki fark nedir? Hangisini ne zaman kullanırsınız?OrtaAlgoritmalar & Veri YapılarıYazılım Müh.
  6. get ve put işlemleri O(1) olan bir LRU Cache tasarlayın.ZorAlgoritmalar & Veri YapılarıYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle