- •1. Ақпараттық іздеудің қарапайым есебі
- •3.Бинарлы ағашты симметриялы ретпен айналу.
- •4.Бинарлы ағашты тура ретпен айналу.
- •5.Бинарлы ағашты кері ретпен айналу.
- •6.Avl ағашта сол жақ және оң жақ бұрылыс операциялары.
- •7. Ықтималды іздеу ағашы.
- •8.Бинарлы іздеу ағашының элементтерін жою.
- •9.Қызыл-қара ағаш және оның ерекшеліктері.
- •Қызыл-қара ағаштың биіктігі
- •Операциялар.
- •Қызыл-қара ағаштың артықшылығы..
- •10.Бинарлы ағаш тұрғызу алгоритмі және олардың арнайы ерекшеліктері.
- •11.Толықтау бинарлы ағаш.
- •12.Бинарлы ағаштың көрсетілуі.
- •13.Іздеу бинарлы ағашынан элементті жою
- •14.O(n log2n) күрделілігімен сұрыптау.
- •15.O(n2) күрделілігімен сұрыптау.
- •16.Бинарлы ағаштармен жасалатын стандарты операциялар.
- •17.Бинарлы ағаштар және оның қолдануы.
- •18.Бинарлы ағашта кесте құру және оның ерекшеліктері.
- •20.Шелл сұрыптауы (Shell_sort) және оның ерекшеліктері.
- •21.Quick_sort сұрыптауы оның ерекшеліктері.
- •22.Пирамидалы сұрыптау алгоритмі (Heap_sort) ж/е оның ерекшелік/і.
- •23.Newman_sort және оның ерекшеліктері.
- •24.Экстремальды қасиет/і бар бинарлы ағаштың арнайы ішкі класс/ы.
- •25.Бинарлы ағаштар қолданыстары және жалпылаулары.
- •26.Квадраттық xештеу.
- •27.Avl ағаштары.
- •28.Стек
- •29.Сызықты хештеу.
- •30.Қос хештеу.
Операциялар.
Элемент
қою.Әр элемент жапырақтың орнына
қойылады, сондықтан орналастыру орнын
табу үшін түбірден келесі ұрпаққа
сілтеме болмай қалғанға дейін жүреміз.
(яғни
бұл ұрпақ - жапрыақ).Оның
орнына
-ұрпақтары
бар қызыл түсті жаңа элемент қоямыз.
Енді
теңесуді тексереміз.
Егер
жаңа элементтің атасы қызыл болса, онда
екі жағдайды ғана қарастыруға болады:
бұл түйіннің "ағасы" да қызыл. Онда «әкесә» мен «ағасын» қара түске, ал «атасын» қызыл түске бояймыз. Енді оның теңесуін тексереміз. Егер осы бояу нәтижесінде біз түбірге жетсек, онда оған кез келген жағдайда қара түс береміз.
"Ағасы" қызыл болса. Егер тек қана бояуды ғана орындасақ, онда барлық бұтақтар бойынша қара биіктіктің тұрақтылығы бұзылуы мүмкін. Сондықтан бұруды орындаймыз. Егер қосылған түйін ұрпақ болса, онда алдымен сол жақ бұруды орындау қажет, ол ұрпақты сол жақ ұрпақ етеді[1].
Төбені жою.
Төбені жою барысында оның ұрпақтарының санына байланысты үш жағдай туындауы мүмкін:
Егер төбенің ұрпақтары болмаса, онда оның атасындағы сілтеуішті ml деп өзгертеміз.
Егер анасында тек бір ғана ұрпақ болса, онда анасында оған сілтеуішті осы төбенің орнына жасаймыз.
Егер де, екі ұрпағы да болса, онда кілттің келесі мәні бар төбені табамыз. Бұл төбенің сол жақ ұрпағы жоқ. Дәл осы төбені екінші пунктте көрсетілген әдіспен жоямыз. Ал оның кілтін бастапқы төбеге көшіріп аламыз.
Ағаштың теңесуін тексереміз. Қызыл төбені жою барысында ағаштың қасиеттері жойылмайтындықтан, теңесуді қалпына келтіру тек қара ағашты жоюда ғана қажет болады. жойылған төбенің ұрпағын қарастырамыз:
Егер осы ұрпақтың ағасы қызыл болса, онда әкесі мен ағасы арасындағы қабырға айналасында бұру жасаймыз, онда ағасы әкесінің әкесі болып кетеді. Оны қара түске, ал әкесін қызыл түске бояймыз.
Егер ағымдағы төбенің ағасы қара болған болса, онда үш жағдайды аламыз:
Ағасының екі ұрпағы да қара. Ағасын қызыл түске бояп, ары қарай төбенің әкесін қарастырамыз.
Егер ағасының оң жақ ұрпағы қара болса, ал сол жақ ұрпағы қызыл болса, онда ағасын және оның сол жақ ұрпағын қайта бояймыз және бұру жасаймыз.
Егер ағасының оң жақ ұрпағы қызыл болса, онда ағасын әкесінің түсіне бояймыз, оның ұрпағы мен әкесін қара түске бояймыз, бұру жасап, алгоритмнен шығамыз.
Сол алгоритмді ағымдағы төбе қара болып тұрғанша және ағаштың түбіне жеткенше жалғастырамыз. Қарастырылған жағдайлардан көріп тұрғанымыздай, жою барысында үштен артық бұру жасалмайды.
Қызыл-қара ағаштың артықшылығы..
Қызыл-қара ағаштардың негізгі артықшылықтарының бірі ол төбенің түсін сақтау үшін тек 1 бит қана жады алады. Әрі орналастыру барысында O(1) -ден кем емес бұру жасалады.
Қызыл-қара ағаштар тәжірибеде ең көп қолданылатын өздігінен теңесетін іздеу ағаштары болып табылады. Жеке жағдайларда, STL(map, set, multiset, multimap) кітапханасының ассоциативті контейнерлері ызыл-қара ағаштарға негізделген.
10.Бинарлы ағаш тұрғызу алгоритмі және олардың арнайы ерекшеліктері.
Мысал арқылы түсіндірейік: 25,31,7,4,10,18,5,13 сан/ жиымы берілсін.
Алгоритм:
1) ағаштың төбесін береміз 25 саны (жиымның алғашқы элементі);
2) кейінгі элементті оның ағаш төбесінен кіші болса сол жақтан, үлкен болса оң жақтан бұтақ арқылы орналастырамыз;
3) кейінгі элементтердің орындары да олардың түбірден кіші немесе үлкен болуына байланысты сол жаққа немесе оң жаққа бұтақ арқылы орналастырып отырамыз.
31 25-тен үлкен оң жақта, ал 7 кіші ол сол жақта орналасады:
4-ті 25 пен салыстырамыз, 4 кіші 25-тен 25-тің сол жағына, 4-ті 7-мен салыстырамыз, 4 кіші 7-ден 7-нің сол жағына орналастырамыз. 10-ды 25-пен салыстырамыз, 10 кіші 25-тен 25-тің сол жағына, 10-ды 7-мен салыстырамыз, 10 үлкен 7-ден 7-нің оң жағына орналастырамыз.
18, 5, 13 сандары 25-тен кіші болғандықтан сол жақта орналасады. 18 7-ден үлкен және 10-нан да үлкен, 18 7-нің оң жағына және 10-ның оң жағына орналасады. 5 7-ден кіші және 4-тен үлкен, 5 7-нің сол жағына және 4-тің оң жағына орналасады. 13 7-ден үлкен, 10-нан үлкен, 18-ден кіші, 13 7-нің оң жағына, 10-ның оң жағына және 18-дің сол жағына орналасады.
Ескере кетейік, сол жақ бұтақта белгіленген түбірден кіші элементтер, ал оң жақ бұтақта белгіленген түбірден үлкен элементтер орналасады.
