ikkilik qidiruv daraxti

DOCX 12 sahifa 262,5 KB Bepul yuklash

Sahifa ko'rinishi (5 sahifa)

Pastga aylantiring 👇
1 / 12
izoh qoldiring16/08/2014 ikkilik qidiruv daraxti. o'chirish. ikkilik qidiruv daraxtiikkilik daraxt o'tgan galgi maqolamizda daraxtlarga qisqacha to'htalib o'tgan holda, hususiy holat ikkilik qidiruv daraxtihaqida fikr yuritishni boshlagan edik. ikkilik qidiruv daraxtinining asosiy shartlari haqida ma'lumot berdik. va uning ustida bajaralishi mumkin bo'lgan asosiy amallar haqida so'z yuritishni boshladik. demak bugun, ikkilik qidiriv daraxti ustida bajaralishi mumkin bo'lgan amallardan biri va ancha murakkabi bo'lgan o'chirishhaqida so'zlashamiz. binary search tree(bst) dan nodeni o'chirish anchagina murrakab jarayon hisoblanadi. shu sabab maqolani bir necha marta o'qib chiqishingizni tavsiya qilaman. demak kalitga ko'ra nodeni o'chirish uchun quyidagi ketma-ketlik amalga oshiriladi. 1. qiymat bo'yicha nodeni topib olamiz. 2. agar external(farzandsiz) node bo'lsa uni otasini chap/o'ng farzandini null ga tenglaymiz. 3. agar internal(farzandli) node bo'lsachi, bosh og'riq shu yerda boshlanadi. jarayonning ushbu ko'rinish 3 hil turga bo'linadi. quyida ushbu holatlarga birma-bir to'xtalib o'tamiz. 1-holat. o'chirilishi lozim bo'lgan node o'ng farzandga ega bo'lmagan holat. 2-holat. o'chirilishi lozim bo'lgan nodening …
2 / 12
o'chirilayotgan node daraxtning ildizi bo'lsa if (parent == null) { _root = node.left; } else { //agar o'chiralayotgan node otaning chap yoki on'g farzandi //ekanligi aniqlanib shunga ko'ra //ota o'z farzandini almashtiradi int compare = parent.key.compareto(node.key); //node parentning chap farzandi if (compare > 0) { parent.left = node.left; } //node parentning o'ng farzandi else { parent.right = node.left; } } } //2-holat else if (node.right.right != null) { node.right.left = node.left; if (parent == null) { _root = node.right; } else { //agar o'chiralayotgan node otaning chap yoki on'g farzandi //ekanligi aniqlanib shunga ko'ra //ota o'z farzandini almashtiradi int compare = parent.key.compareto(node.key); //node parentning chap farzandi if (compare > 0) { parent.left = node.right; } //node parentning o'ng farzandi else { parent.right = node.right; } } } // 3-holat else if (node.right.left != null) { node tempparent = node.right; node temp = node.right.left; while (temp.left != null) { tempparent = …
3 / 12
/ /// ikkilik daraxtidagi eng kichik qiymatli nodeni o'chiradi. /// public void deletemin() { //min node node current = _root; //min nodening otasi. node parent = null; //min nodeni topguncha chapga qarab boramiz. while (current.left != null) { parent = current; current = current.left; } //agar parent nullga teng bo'lsa //daraxt faqat bir dona node bor u ham bo'lsa _root if (parent == null) { //daraxt endi bo'sh _root = null; count = 0; } else { //minning otasining chap farzandini nullga tenglaymiz/ parent.left = null; count--; } } keyingi maqola bst traversal haqida bo'ladi. 2222222222222222222222222222222222222222222222222222222222222222222222222222 ikkilik qidiruv daraxti. ikkilik qidiruv daraxtiikkilik daraxt ishlatishi doirasining kengligi bo'yicha uncha-muncha ma'lumotlar strukturasini ortda qoldiradigan daraxtlar va uning hususiy holati ikkilik qidiruv daraxti (binary search tree) haqida gaplashamiz. daraxtlar ma'lumotlarni yerarxik usulda saqlay olish qobilyati, qidirish qulayligi uchun ko'pchilik dasturchilarning sevimli ma'lumotlar strukturasidan biri hisoblanadi. tuzilishiga ko'ra linkedlistga o'hshash tomonlari mavjud, linkedlistdagi har …
4 / 12
m ikkilik daraxtni nomini olgan. b a ning chap farzandi, c esa a ning o'ng farzandi deyiladi. agar ikkilik daraxtiga, har qanday node o'zining chap farzandidan katta va o'zining o'ng farzandidan kichik bo'lsin - degan shart qo'shilsa ikkilik daraxti o'z-o'zidan ikkilik qidiruv daraxti ga aylanadi. ya'ni har qanday nodening chap tarafida yotgan barcha nodelar nodedan kichik qiymatga ega, o'ng tarafda yotganlar esa aksincha katta qiymatga ega. rasm: binary search tree(bst) ning asosiy sharti, har bir nodening tarkibida taqqoslanishi mumkin bo'lgan qiymat saqlangan bo'lishi lozim. buning uchun c# dagi icomparable iterfacedan foydalanishimiz mumkin. e'tibor bergan bo'lsangiz daraxtning eng chap farzandi qiymatlar orasida eng kichigi, o'z navbatida daraxting eng ohirigi o'ng bargi daraxtning ichida yotgan qiymatlarning eng kattasi hisoblanadi. boshqacha qilib aytganda bst ning ichida yotgan elementlar doim saralangan holatda bo'ladi aynan shu narsa bst ning qulaylik tarafidur. quyida bst ustida bajarilishi mumkin bo'lgan asosiy amallarga qisqacha to'xtalamiz. bst ustida bajaralish mumkin …
5 / 12
arda yotgan qiymat har doim chap farzandning qiymatidan katta, va o'ng farzandning qiymatidan kichik. bst ga yangi qiymat qo'shish. qo'shilishi lozim bo'lgan qiymatni, daraxtning ildizidan boshlab taqqoslab boramiz, agar qiymat ildizdan kichik bo'lsa huddi shu ishni chap farzand bilan, agar katta bo'lsa o'ng farzand bilan bajaramiz. e'tibor bersangiz yangi qiymat har doim borib farzandsiz nodega aylanadi shu jihat mavjudligi uchun qo'shish amali ancha sodda. rekursiv funksiyaning to'htash nuqtasi bu qaralayotgan nodening o'ng yoki chap farzandi yo'qligi bo'ladi. /// /// bstga yangi qiymat qo'shish /// /// nodening kalit obyekti /// nodeda yotgan qiymat public void add(k key, v value) { // qo'shishni daraxtning ildizidan boshlaymiz. _root = add(_root, key, value); //nodelar soni bittaga ko'payadi. count++; } /// /// rekursiya yordamida nodelardagi qiymatlarni o'zaro /// taqqosablab katta yoki kichikligiga qarab o'ng yoki chap /// farzanda yaratadi. /// /// har bir farzandni alohida bst sifatida qarav olsak bo'ladi /// qo'shilayotgan kalit obyekt /// …

Ko'proq o'qimoqchimisiz?

Barcha 12 sahifani Telegram orqali bepul yuklab oling.

To'liq faylni yuklab olish

"ikkilik qidiruv daraxti" haqida

izoh qoldiring16/08/2014 ikkilik qidiruv daraxti. o'chirish. ikkilik qidiruv daraxtiikkilik daraxt o'tgan galgi maqolamizda daraxtlarga qisqacha to'htalib o'tgan holda, hususiy holat ikkilik qidiruv daraxtihaqida fikr yuritishni boshlagan edik. ikkilik qidiruv daraxtinining asosiy shartlari haqida ma'lumot berdik. va uning ustida bajaralishi mumkin bo'lgan asosiy amallar haqida so'z yuritishni boshladik. demak bugun, ikkilik qidiriv daraxti ustida bajaralishi mumkin bo'lgan amallardan biri va ancha murakkabi bo'lgan o'chirishhaqida so'zlashamiz. binary search tree(bst) dan nodeni o'chirish anchagina murrakab jarayon hisoblanadi. shu sabab maqolani bir necha marta o'qib chiqishingizni tavsiya qilaman. demak kalitga ko'ra nodeni o'chirish uchun quyidagi ketma-ketlik amalga oshiriladi. 1. qiy...

Bu fayl DOCX formatida 12 sahifadan iborat (262,5 KB). "ikkilik qidiruv daraxti"ni yuklab olish uchun chap tomondagi Telegram tugmasini bosing.

Teglar: ikkilik qidiruv daraxti DOCX 12 sahifa Bepul yuklash Telegram