در علم رایانه ترای یا درخت پیشوندی یک داده ساختار درختی است که برای آرایه های شرکت پذیری استفاده می شود که کلیدهای آن معمولاً رشته می باشند. برخلاف یک درخت دودویی جستجو در این درخت هیچ گرهی، کلیدی را که توسط آن گره مشخص می شود ذخیره نمی کند؛ در عوض، موقعیت آن در درخت نشان دهنده کلید مربوط به آن است. تمام فرزندان یک گره پیشوند مشترکی دارند که این پیشوند در گره مربوطه ذخیره می شود. گره ریشه نیز یک رشته خالی است. معمولاً همه گره ها مشخص کننده کلیدها نیستند. فقط برگ ها و بعضی از گره های داخلی با کلیدها مرتبط می شوند. گره های حاوی کلید به نحوی علامت گذاری می شوند تا تمام کلیدها مشخص شوند.
البته یک ترای الزاماً شامل رشته های کاراکتری نمی باشد، بلکه حتی برای جایگشتهای عددی و مواردی از این قبیل هم می توان از ترای استفاده کرد.
جستجوی کلیدها در ترای سریعتر است و از مرتبه طول کلید می باشد. اما در یک درخت دودویی جستجو با تعداد گره n باید log ( n ) مقایسه برای پیدا کردن یک عنصر انجام داد.
ترای زمانی که شامل تعداد زیادی از رشته های کوچک باشد، فضای کمتری نسبت به درخت دودویی جستجو برای ذخیره اشغال می کند.
ترای می تواند به عنوان جایگزین جدول درهم نیز استفاده شود.
مزایا:
۱ - جستجوی داده ها در ترای سریعتر است و در بدترین حالت از ( O ( m می باشد. اما در جدول درهم در شرایط بد این کار از ( O ( n می باشد.
۲ - در ترای تصادم وجود ندارد.
۳ - در ترای نیازی به توابع درهم سازی یا تغییر این توابع نیست.
۴ - ترای می تواند ترتیب الفبایی داشته باشد.
معایب:
ترای در مواردی ممکن است کندتر باشد. مخصوصاً در جاهایی که داده ها مستقیماً از دیسک سخت یا سایر حافظه های جانبی در دسترس هستند و سرعت دسترسی تصادفی در آن ها به مراتب کمتر از حافظه اصلی است.
استفاده رایج ترای در ذخیره سازی فرهنگ لغت است. برنامه های فرهنگ لغت از توانایی و سرعت بالای ترای در جستجو، درج و حذف کلیدها بهره می برند.
مرتب سازی واژه نگاری یک مجموعه از کلیدها به وسیلهٔ الگوریتمی که از ترای استفاده می کند به این ترتیب است:
- درج تمام کلیدها در ترای
- خروج تمام کلیدها به وسیلهٔ پیمایش پیش ترتیبی
یک برنامهٔ ساده و با رویکرد استفاده از توابع بازگشتی به زبان سی++ برای ذخیرهٔ اطلاعات در یک درخت ترای و دسترسی و جستجو در این ساختمان داده ها در زیر آمده است:
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفالبته یک ترای الزاماً شامل رشته های کاراکتری نمی باشد، بلکه حتی برای جایگشتهای عددی و مواردی از این قبیل هم می توان از ترای استفاده کرد.
جستجوی کلیدها در ترای سریعتر است و از مرتبه طول کلید می باشد. اما در یک درخت دودویی جستجو با تعداد گره n باید log ( n ) مقایسه برای پیدا کردن یک عنصر انجام داد.
ترای زمانی که شامل تعداد زیادی از رشته های کوچک باشد، فضای کمتری نسبت به درخت دودویی جستجو برای ذخیره اشغال می کند.
ترای می تواند به عنوان جایگزین جدول درهم نیز استفاده شود.
مزایا:
۱ - جستجوی داده ها در ترای سریعتر است و در بدترین حالت از ( O ( m می باشد. اما در جدول درهم در شرایط بد این کار از ( O ( n می باشد.
۲ - در ترای تصادم وجود ندارد.
۳ - در ترای نیازی به توابع درهم سازی یا تغییر این توابع نیست.
۴ - ترای می تواند ترتیب الفبایی داشته باشد.
معایب:
ترای در مواردی ممکن است کندتر باشد. مخصوصاً در جاهایی که داده ها مستقیماً از دیسک سخت یا سایر حافظه های جانبی در دسترس هستند و سرعت دسترسی تصادفی در آن ها به مراتب کمتر از حافظه اصلی است.
استفاده رایج ترای در ذخیره سازی فرهنگ لغت است. برنامه های فرهنگ لغت از توانایی و سرعت بالای ترای در جستجو، درج و حذف کلیدها بهره می برند.
مرتب سازی واژه نگاری یک مجموعه از کلیدها به وسیلهٔ الگوریتمی که از ترای استفاده می کند به این ترتیب است:
- درج تمام کلیدها در ترای
- خروج تمام کلیدها به وسیلهٔ پیمایش پیش ترتیبی
یک برنامهٔ ساده و با رویکرد استفاده از توابع بازگشتی به زبان سی++ برای ذخیرهٔ اطلاعات در یک درخت ترای و دسترسی و جستجو در این ساختمان داده ها در زیر آمده است:
wiki: درخت پیشوندی