درخت (Tree)

مفهوم درخت: ریشه، گره، برگ، ارتفاع و عمق؛ اصطلاحات کلیدی و کاربردهای واقعی درخت در نرم‌افزار

درخت چیست؟

درخت (Tree) ساختاری سلسله‌مراتبی (غیرخطی) است: یک ریشه (root) در بالا و گره‌های فرزند زیر آن. مهم‌ترین ویژگی: اتصالات بدون دور — بین هر دو گره دقیقاً یک مسیر وجود دارد.

اصطلاحات کلیدی

اصطلاحمعنا
ریشه (Root)گره بالای درخت — بدون والد
گره داخلی (Internal)گره‌ای که حداقل یک فرزند دارد
برگ (Leaf)گره بدون فرزند
والد/فرزند (Parent/Child)رابطه مستقیم بالا-پایین
عمق (Depth)فاصله گره تا ریشه
ارتفاع (Height)بیشترین عمق درخت (فاصله ریشه تا دورترین برگ)
زیردرخت (Subtree)هر گره با تمام فرزندانش، خودش یک درخت است

مثال ملموس: ساختار پوشه‌ها

ساختار پوشه‌های کامپیوتر دقیقاً یک درخت است: درایو C ریشه، پوشه‌ها گره‌های داخلی و فایل‌ها برگ‌ها. DOM صفحات وب (تگ‌های HTML) هم درخت است!

کاربردهای واقعی درخت

نمایش درخت در کد

رایج‌ترین روش، کلاس گره با لیست فرزندان:

class TreeNode:
    def __init__(self, data):
        self.data = data
        self.children = []

برای درخت دودویی (حداکثر ۲ فرزند) از left و right صریح استفاده می‌شود — مبحث بعدی.

پیمایش درخت

برخلاف آرایه که ترتیب واضح دارد، درخت را می‌توان به چند ترتیب پیمود:

نکته: چرا درخت؟ چون جستجو در درخت متوازن O(log n) است — مثل آرایه مرتب اما با درج/حذف O(log n) به‌جای O(n)! بهترینِ هر دو دنیا.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.

ابزارهای مرتبط