İçeriğe atla
ΣDSA Patterns
Menü
Dil

Ağaç DFS

Rehber 3 / 6 · Yol 3 / 6

Etkileşimli

Zihinsel model

Bu problem için animasyonlu çözüm. Adımları kaydır veya boşlukla duraklat; değişmezi yüksek sesle yeniden anlat.

Adım 1 / 8
3920157

post-order: önce çocuklar, sonra ben

Ağaç DFS yapı üzerinde yürür, düz liste değil. Kök 3, sol 9, sağ alt ağaç 20 → 15, 7.

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

Maximum Depth of Binary Tree

Problem (yeniden ifade)

Bir ikili ağacın kökü verildiğinde, en büyük derinliğini (en uzun kök-yaprak yolu üzerindeki düğüm sayısı) döndür.

Sezgi

Derinlik(düğüm) = 1 + max(derinlik(sol), derinlik(sağ)); boş düğümün derinliği 0.

Yaklaşımlar

Özyinelemeli DFS

Doğrulanmadı
Zaman O(n)Alan O(h)

Fikir. Base null→0; children’ın max’ının 1 fazlasını döndür.

Yürüyüş. Yüksekliği 3 olan dengeli ağaç → cevap 3.

Trade-off. BFS seviye sayımı eşdeğer; DFS yazımı en kısa.

Çözüm
export class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val = 0, left: TreeNode | null = null, right: TreeNode | null = null) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}

export function maxDepth(root: TreeNode | null): number {
  if (!root) return 0;
  return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
}
export class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val = 0, left: TreeNode | null = null, right: TreeNode | null = null) {
    this.val = val;
    this.left = left;
    this.right = right;
  }
}

export function maxDepth(root: TreeNode | null): number {
  if (!root) return 0;
  return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
}

Şablon bağlantısı

Tree DFS parent’a toplu bilgi döndürür.

Yansıma