Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
esepter&teoria.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
13.77 Mб
Скачать

16.Бинарлы ағаштармен жасалатын стандарты операциялар.

Ағаштарды телу арнайы операцияларын пайдаланып, қайталанба айналымдардың тиімді екендігін көрсететін жолмен жүруімізге болады. Мысалы, ағаштың симметриялы айналымында бұл ағашты оң жақтан симметриялы телінген ағаш түрінде құруға болады.

Штрихтелінген бағыттауыш жіп деп аталады және ол кері бағытты қозғалыс кезінде,симметриялы айналымда келесі кезекте болып өтетін түпкі ағашты көрсетеді.

Енді симметриялы телінген ағашта,симметриялы айналуда алдыңғы сәйкес төбеге бір қосымша ұяшықты бағыттаушы жіп ретінде қосып,стекті пайдаланбай-ақ,іске асыруға болады.

Тура ретпен орналасқан айналымдар үшін оң жақтан тура (түзу) телінген ағаштарды қосуға болады. Бағыттауыштар бұл ағашта түпкі ағашты емес, енді тура ретті айналымдағы келесі кезекте болатын төбені көрсетеді. Сондай-ақ, кері реттегі айналымға да қатысты.Енді жоғарыда көрсетілген екі суретте де бағыттың айырмашылығын анықтау пайдалы болады. Сонымен қатар, мұнда ағаштардың сол жақтан симметриялы және сол жақтан тура телінген класстарын еске сақтаған жөн. Сол жақтан симметриялы телінген ағаш жағдайында, әрбір сол жақтағы бағыттауыш ағаштың сәйкес төбесіндегі симметриялы ретте жүргізілетін,берілген түйіннің алдыңғысына сілтеме жібі болады.Тура осылай,сол жақтан тура телінген ағаш үшін ағаштың сәйкес төбесінде әрбір сол жақтағы бағыттауыштың,ағаштың тура бағытындағы өзінің алдыңғысына сілтеме жібі болады.

Бинарлы ағаштарға жүргізілетін операциялар.Олардың кейбіреуін, яғни бинарлы ағаштың телінуі мен айналымын біз жоғарыда қарастырып өткенбіз.Жаңа операциялар тізімін микрооперациялардан бастауға болады,олардың ішінен келесі операцияларды ерекшелейік:

  • copy(t,v’)- бізге белгілі тура симметриялы және кері реттегі айналымдардың көмегімен орындалатын бинарлы ағаштың операциясы.Бұл операцияның орындалуының нәтижесі бастапқы бинарлы ағаштың көшірмесі. Copy(t,v’) функциясы t-ағашының көшірмесінің түбірі – V’-түйініне көрсеткішті қайтарады.

  • ecv(t1,t2) – аргументтері екі бинарлы ағаш болатын,ал нәтижесі, егер эквиваленттілік орындалса true мәнін,кері жағдайда false мәнін қабылдайтын эквиваленттілік операциясы. Мұндағы “эквмваленттілік” термині бинарлы ағаштар үшін,бұл операция орындалмай тұрып,алдын-ала анықталып, және ситуация барысында өзгертіліп қолданылады. Мұндай жағдайда,мысалы үшін бір бинарлы ағаштың көшірмелері жөнінде айтуға болады.

  • subtree(v,t) – операциясы түбірі t- ағашының қандай да бір V- төбесі болатын, t- ағашының ішкі ағашын қайтарады. Дәлірек айтсақ, subtree операциясы сілтемені v- түйініне қайтарады. Енді келесі операцияларды қарастырсақ:

  • inf(v,t’) йункциясы t- ағашының v- түйінінің құрамын толығымен қайтарады.

  • right_des (v,t’) left_dess (v,t) функциялары t- ағашының v-төбесінің сәйкес тікелей оң және сол жақ ұрпақтарына көрсеткіштерді қайтарады,әрине егер олар бар болса.Бұл көрсетілген операция типімен басқа да операциялар байланысты, дәлірек айтсақ,set_left(v,v’,t) және set_right(v,v’,t). Мұндағы v t- ағашының сәйкесінше t- ағашында сол және/немесе оң тікелей ұрпақтары болмайтын түйіні set_left(v,v’,t) операциясы V’төбесі болатын, яғни V’төбесіне көрсеткіш болатын сол жақ тікелей ұрпақты құрады және осы төбеге сілтемені қайтарады. Ал set_right(v,v’,t) операциясы V’- төбесіне көрсеткіштің рөлін атқаратын t-ағашының v-төбесінің оң жақ тікелей ұрпақтарын құрайды және сәйкесінше V’-төбесіне сілтемені қайтарады.

  • anc(V,t) функциясы t-ағашында V-төбесінің тікелей тегіне көрсеткішті қайтарады,егер олар табылса.

  • L_nabour (V,t) функциясы t- ағашында V-төбесінің сол жақ көрші төбесіне көрсеткішті қайтарады.

  • r_nabour (V,t) функциясы t- ағашының V-төбесінің сәйкес оң жақ көршісіне көрсеткішті қайтарады.

  • change (V,V’,t) t- ағашындағы V- түйінімен V’ түйінін ауыстырады (алмастырады).Бұл операция макрооперацияға қарағанда дербес болып табылады.

  • change (V,V’,t) t- ағашындағы түбірі V түйіні болатын ішкі ағашты, t’-ағашындағы түбірі V түйіні болатын ішкі ағашпен алмастырады, кейбір жағдайларда t=t’.

Маңызды және сондай-ақ бастапқы операция болып табылатын make tree (V,V’, V”, t) операциясы t- ағашын V’ түйініндегі түбірмен және V’ түйінінен шығатын V’-сол және V’-оң жақ ішкі ағаштар түбірлеріне бағыттаушылармен(әрине,егер олар бар болса) береді. Егер V’ түйінінің оң(cол) жақ тікелей ұрпақтарын болмаса, онда V-төбесінің сәйкес ұясына nill жазылады.Ал make_tree функциясы түбірге көрсеткішті – V түйінін қайтарады.

Бинарлы ағаштарға жиі қолданылатын операция болып ins(V,t) операциясы табылады,ол t- ағашына жаңа V түйінін кірістіру операциясы. Бұл операция қарапайым бинарлы ағаш үшін жоғарыда көрсетілген мысалдар бойынша ешбір қйындықсыз орындалады. Алайда,басқа да арнайы бинарлы ағаштар класы үшін, толықтау ағаштар үшін және қызықтысы AVL класының ағаштары үшін, н/е хип-құрылым үшін бұл операцияның өзіндік ерекшеліктері мен қолайсыздықтары бар.Қарапайым ағаштар үшін,әрине егер олар бос болмаса ins(V,t) функциясы сілтемені v-төбесінің түпкі ағашына қайтарады,ал оның информациялық өрісі жаңа бір төбеге сілтеме түрінде жазылады, яғни V-ға.Тағы да басқа осындай басқа бір операция del(V,t) ол t-бинарлы ағашынан V түйініндерін өшіреді. Бұл операция ins(V,t)-кірістіру операциясына қарағанда толық ж/е AVL–ағаштары клас/ын айтпағанда, қарапайым ағаштар үшін де комментарийлерді қажет етеді. del(V.t)-функциясы v-төбесінің тікелей негізінде (“атасына”) сілтемені қайтарады, ал информациялық өрісте жаңа ұрпақтың төбесіне сілтеме жазылады, әрине егер ол бар болса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]