Binary tree'de preorder, inorder, postorder ve level-order gezinme nedir?

Cevap

GezinmeSıraTipik kullanım
PreorderKök, sol, sağAğacı kopyalama, serileştirme
InorderSol, kök, sağBST'de elemanları sıralı verir
PostorderSol, sağ, kökSilme, alt ağaç boyutu/yüksekliği hesaplama
Level-orderSeviye seviye (BFS)En kısa derinlik, seviye bazlı işlemler
class Node:
    def __init__(self, val, left=None, right=None):
        self.val, self.left, self.right = val, left, right

def inorder(root, out):
    if root:
        inorder(root.left, out)
        out.append(root.val)
        inorder(root.right, out)
    return out

# Özyinelemesiz inorder (stack ile)
def inorder_iter(root):
    out, stack, cur = [], [], root
    while cur or stack:
        while cur:
            stack.append(cur)
            cur = cur.left
        cur = stack.pop()
        out.append(cur.val)
        cur = cur.right
    return out

from collections import deque
def level_order(root):
    if not root: return []
    res, q = [], deque([root])
    while q:
        level = []
        for _ in range(len(q)):
            node = q.popleft()
            level.append(node.val)
            if node.left: q.append(node.left)
            if node.right: q.append(node.right)
        res.append(level)
    return res
  • Zaman: hepsi O(n).
  • Bellek: DFS türlerinde O(h) (h = yükseklik; dengesiz ağaçta O(n)), level-order'da en geniş seviye kadar O(w).

Örneğin 2 kökü, 1 sol ve 3 sağ çocuğu olan ağaçta: preorder 2,1,3, inorder 1,2,3, postorder 1,3,2.

  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