درخت ۲–۳
در علم رایانه، ساختمان داده درخت ۲-۳، یک نوع درخت جستجوی خودمتوازن است. درختهای جستجوی دودویی ممکن است با درجها و حذفهای گوناگون، حالت توازن خود را از دست بدهند. حالتی را در نظر بگیرید که یک درخت دودویی جستجو دارید و n داده را که اتفاقاً از کوچک به بزرگ مرتب هستند به ترتیب در آن درج میکنید. در این حالت، این درخت عملاً به یک لیست پیوندی تبدیل میشود که جستجو در آن از مرتبه
ویژگیها
درخت ۲-۳ سه نوع گره دارد:
- گره برگ که فقط یک مقدار دارد.
- گرهِ ۲
- گرهِ ۳
در گره ۲،
- هر مقدار در باید کوچکتر ازباشد.
- هر مقدار در باید بزرگتر ازباشد.
- طول مسیرها از ریشه به برگهای هریک از زیردرختها باید یکسان باشد.
در گره ۳،
- هر مقدار در باید کوچکتر ازباشد.
- هر مقدار در باید بزرگتر ازو کوچکتر ازباشد.
- هر مقدار در باید بزرگتر ازباشد.
- طول مسیرها از ریشه به برگهای هریک از زیردرختها باید یکسان باشد.
باید توجه داشت که همه مقادیر در گرههای برگ وجود دارند و گرههای داخلی فقط برای هدایت جستجو ایجاد شدهاند. هر گره داخلی یک گره ۳(با دو یا سه فرزند) است که مقدار
جستجو
همانطور که گفتهشد اطلاعات ذخیرهشده در گرههای داخلی باعث آسانشدن جستجو میشود. فرض کنید میخواهیم عنصر
- اگر کوچکتر از مقدارریشه بود بهزیردرخت چپ میرویم.
- (درصورتی که دو زیر درخت داشته باشیم) اگر بزرگتر از مقدارریشه بود به زیردرخت راست میرویم.
- اگر بزرگتر از مقدارریشه و کوچکتر ازآن بود به زیردرخت میانه میرویم.
- اگر بزرگتر از مقدارریشه بود به زیردرخت راست میرویم.
این کار را برای گرههای داخلی مسیر انجام میدهیم تا به برگ
درج در درخت ۲-۳
میخواهیم
- دو فرزند دارد که در این حالترا به عنوان فرزند سومدر جای مناسب آن درج میکنیم و تغییرات لازم را در گرههای داخلی اعمال میکنیم.
- سه فرزند دارد و درج چهار فرزند برایمجاز نیست. یک برادر سمت چپ مثلبرایایجاد میکنیم دو فرزند کوچکتر را فرزند آن قرار میدهیم.را هم به صورت بازگشتی در سطح بالاتر درخت درج میکنیم.
به عنوان یک مثال میخواهیم عنصر x=۵ را در درخت زیر درج کنیم.
درخت حاصل به شکل زیر خواهد بود:
حذف از درخت ۲-۳
برای حذف هم ابتدا باید عنصر مورد نظر مثل
- دو فرزند برای باقیماندهاست. که در این صورت حذف پایان یافته و نیاز به عمل دیگری نیست.
- تنها یک فرزند دیگر برای باقیماندهاست که آن رامینامیم. در این حالت، اگرریشه باشد آن را حذف ورا ریشه قرار میدهیم. در غیر این صورت باید از عموهایکمک بگیریم. بدین ترتیب که اگر یکی از آنها سه فرزند داشته باشند فرزند مناسب آن را بهمیدهیم تا هر دو دو فرزند داشته باشند. ولی اگر هر دو عمویدو فرزند داشته باشند این باررا به یکی از آنها میدهیم و به طور بازگشتیرا از درخت حذف میکنیم.
نگارخانه
منابع
- قدسی، محمد. دادهساختارها و مبانی الگوریتمها. تهران : موسسه فرهنگی فاطمی ، ۱۳۸۸ شابک ۹۷۸−۹۶۴−۳۱۸−۵۴۹−۷.