Кіріспе

Әрбір түйінінде ең көп m баласы болатын ағаш дерек құрылымы. Графтар теориясында, m-ағаш (м-нің бүтін, теріс емес мәні үшін) (кейде n-ағаш, k-ағаш немесе k-жол ағашы деп те аталады) – әр түйінінде m баласынан аспайтын ағаш тәрізді құрылым (немесе кейбір авторлар үшін реттелген ағаш). Екілік ағаш – m = 2 болғандағы маңызды жағдай; сондай-ақ, үштік ағаш – m = 3 болғандағы жағдай.

М-ар ағаштарының түрлері

Толық m ағашы — әр деңгейде әрбір түйіннің 0 немесе m баласы бар m ағашы. Толық m ағаш (немесе, сирек кездесетін, тамамына келген m ағаш) — барлық жапырақты түйіндері бірдей тереңдікте орналасқан толық m ағаш.

М-ар ағаштар үшін көлденең әдістер

Мари ағашын аралау екілік ағашты аралауға өте ұқсас. Алдын ала аралауда ата-ана түйіні, сол жақ кіші ағаш және оң жақ кіші ағаш қарастырылады, ал кейіннен аралауда сол жақ кіші ағаш, оң жақ кіші ағаш және ата-ана түйіні қарастырылады. Кезекпен аралау үшін, m > 2 болғандықтан, түйінде екіден астам бала болғандықтан, сол және оң кіші ағаш ұғымдарын анықтау қажет. Сол/оң кіші ағаштарды құрудың бір әдеттегі әдісі – бала түйіндерінің тізімін екі топқа бөлу. Түйіннің m баласына реттілік белгілеп, бірінші балалар сол жақ кіші ағашты, ал қалған балалар оң жақ кіші ағашты құрайды.

М- матрикалық ағашты екілік ағашты түрлендіру

m-арлы ағашты массив арқылы бейнелеу тиімсіз, себебі практикалық қолданыстардағы түйіндердің көпшілігі m-нен кем балаға ие. Соның салдарынан, бұл жадыда үлкен пайдаланылмаған орын бар сиреп кеткен массивқа алып келеді. Кез келген m-арлы ағашты екілік ағашқа түрлендіру ағаштың биіктігін тұрақты шамамен ғана арттырады және жалпы нашар жағдай уақыт күрделілігіне әсер етпейді. Яғни, ең алдымен, белгілі бір ата-ана түйінінің барлық тікелей бала түйіндерін байланыстырып, сілтеме тізімін құраймыз. Содан кейін, ата-анадан бірінші (сол жақ) балаға байланысты сілтемені сақтап, қалған балаларға барлық басқа сілтемелерді жоямыз. Бұл процесті барлық балалар үшін қайталаймыз (егер оларда балалары болса), барлық ішкі түйіндерді өңдегенге дейін және ағашты сағат тілі бойынша 45 градусқа бұрамыз. Нәтижесінде алынған ағаш – берілген m-арлы ағаштан алынған қажетті екілік ағаш.

Массивтер

m-арнайы ағаштарды енді бірінші рет массивтердегі жасырын деректер құрылымы ретінде сақтауға болады, және егер ағаш толық m-арнайы ағаш болса, бұл әдіс орынды ысырап етпейді. Осы ықшам орналасуда, егер түйіннің индексі i болса, оның c-шы баласы (1, ..., m диапазонында) индексте табылады, ал оның ата-анасы (бар болса) индексте табылады (тамырдың индексі нөл деп есептесек, яғни 0-ге негізделген массив). Бұл әдіс, әсіресе алдын ала жүріп өту кезінде, ықшам сақтау мен жақсы жадқа сілтеме жасау артықшылықтарын ұсынады. Бұл әдістің жадтық күрделілігі .

Қолдану

m ary tree-дің бір қолданысы – қабылданатын жолдарды тексеруге арналған сөздік құру. Мұны істеу үшін, m-ді жарамды символдардың санына тең етіңіз (мысалы, ағылшын әліпбиінің әріптерінің саны), ал ағаштың түбірі бастапқы нүктені көрсетеді. Сол сияқты, әрбір тармақтың келесі мүмкін символға дейін m тармағы болуы мүмкін. Осылайша, жол бойындағы символдар кілттердің соңғы символын "терминалдық түйін" деп белгілеу арқылы жарамды кілттерді көрсете алады. Мысалы, төмендегі мысалда "at" және "and" жарамды кілттік жолдар, ал "t" және "d" терминалдық түйіндер ретінде белгіленген. Терминалдық түйіндер берілген кілтке байланысты қосымша ақпаратты сақтай алады. B tree, Octree және/немесе trie пайдаланып мұндай сөздік құрудың ұқсас тәсілдері бар.