―Маълумотлар тузилмаси ва алгоритмлар‖ фанидан маърузалар матни.
муаллиф: Б.Б.Акбаралиев
ѐки
m-ўлчовли дарахтни бинар кўринишга келтириш.
Дарахтлар устида бажариладиган амаллар
1. Дарахт кўруви (Обход дерева).
2. Қисм дарахтни ўчириш.
3. Қисм дарахт қўйиш.
Дарахт кўрувини амалга ошириш учун қуйидаги
учта процедурани
бажариш лозим:
1. Илдизни қайта ишлаш.
2. Чап тармоқ(шох)ни қайта ишлаш.
3. Ўнг тармоқ(шох)ни қайта ишлаш.
Юқоридаги процедура қандай кетма-кетликда
амалга оширилишига
қараб кўрувни учта кўринишга ажратилади.
1. Юқоридан қуйига. Процедур қуйидаги кетма-кетликда бажарилади
A-B-C.
2.Чапдан ўнг. Процедур қуйидаги кетма-кетликда бажарилади
―Маълумотлар тузилмаси ва алгоритмлар‖ фанидан маърузалар матни.
муаллиф: Б.Б.Акбаралиев
B-A-C.
3. Қуйидан юқорига. Процедур қуйидаги кетма-кетликда бажарилади
B-C-A.
Масалан қуйидаги дарахтда кўрув ўтказайлик.
Дарахат кўруви тартиби:
Юқоридан
пастга:
A,B,C,D,E,F,G.
Чапдан ўнга: C,D,B,E,F,A,G.
Пастдан
юқорига:
D,C,F,E,B,G,A.
Дарахт кўригини рекурсив процедурлари:
1) PROCEDURE pretrave (tree) {юқоридан пастга кўрик}
IF tree<>nil
THEN PRINT info (tree)
pretrave (left (tree))
pretrave (right (tree))
END IF
RETURN
2) PROCEDURE intrave (tree)
IF tree<>nil
THEN intrave (left (tree))
PRINT info (tree)
intrave (right (tree))
END IF
RETURN
3) PROCEDURE postrave (tree)
IF tree<>nil
THEN postrave (left (tree))
postrave (right (tree))
PRINT info (tree)
END IF
RETURN
Бинар дарахт бўйича қидирув процедураси
Мазкур процедуранинг
вазифаси шундан иборатки, у
берилган калит
бўйича дарахт тугуни қидирувини амалга оширади. Қидирув операциясининг
―Маълумотлар тузилмаси ва алгоритмлар‖ фанидан маърузалар матни.
муаллиф: Б.Б.Акбаралиев
давомийлиги дарахт тузилишига боғлиқ бўлади. Ҳақиқатдан, агар элементлар
дарахтга калит қийматлари ўсиш (камайиш) тартибида келиб тушган бўлса, у
ҳолда дарахт бир томонга йўналган рўйхат ҳосил қилади (чиқиш
даражаси
бир бўлади, яъни ягона шоҳга эга), масалан:
Бу ҳолда дарахтда қидирув вақти, бир томонлама йўналтирилган
рўйхатдаги каби бўлиб, ўртача қараб чиқишлар сони N/2 бўлади.
Агар дарахт мувозанатланган бўлса, у ҳолда қидирув
энг самарали
натижа беради. Бу ҳолда қидирув
N
2
log
дан кўп бўлмаган
элементларни
кўриб чиқади.
Қидирув процедурасини кўриб чиқамиз. search ўзгарувчисига топилган
бўғин кўрсаткичи ўзлаштирилади:
p=tree
WHILE p<>nil DO
IF key=k (p)
THEN search=p
RETURN
END IF
IF key<>k (p)
THEN p=left (p)
ELSE p=right (p)
END IF
END WHILE
search=nil
RETURN
Do'stlaringiz bilan baham: