2D rectangle intersection search

2D rectangle intersection search deb, berilgan N ta to'g'ri to'rtburchaklar orasidan ustma-ust tushganlarini topishga aytiladi.
Dasturchi, frilanser, gik va introvert

2D rectangle intersection search deb, berilgan N ta to'g'ri to'rtburchaklar orasidan ustma-ust tushganlarini topishga aytiladi.

Masala. Berilgan kartadan ma'lum bir yuza ichiga kirgan nuqtalar sonini topish kerak. Ularni dasturda qanday qilib topamiz? Eng keraklisi, nuqtalarni dasturda qanday ifodalaymiz?

AVL-tree (kashfiyotchilari Adelson-Velsky va Landis'lardan olingan) yana bir balanslangan binary search tree. AVL-tree'ga o'tishdan oldin, balanced binary tree haqida eslab olamiz.

Red-black tree'dagi node'ning binary search tree node'idan farqi - unga color atributi qo'shilgan. Color node'ning qizil yoki qizilmas ekanini aniqlash uchun kerak bo'ladi.

2-3 tree haqida tanishib chiqqan bo'lsangiz, unda node qo'shishda ko'p shartlarni hisobga olish kerak bo'lardi. Umuman, 2-3 tree'ni kodda ifodalash qiyin edi. Red-black tree mana shu insertdagi qiyinchiliklarga yechim sifatida keladi.

Balanced search tree'da biz binary search tree'ning uzunligini kamaytirish hisobiga, worst case'ni O (log N) gacha tushiramiz.

BSTga element qo'shish, o'chirish, qidirish, maksimum/minimum elementni chiqarish uchun API yozamiz. APIning tuzilishi quyidagicha bo'ladi.

Binary search tree (BST) - chap child'ining qiymati o'zidan kichik bo'lgan, o'ng child'ining qiymati o'zidan katta bo'lgan node'lardan iborat binary tree.

Tree - chiziqli bo'lmagan ma'lumot tuzilmasi (data structure) bo'lib u ma'lumotlarni ierarxik ko'rinishda tashkil qiladi. Masalan, oila shajarasini tasavvur qiladigan bo'lsak, u ham tree ma'lumot tuzilmasi hisoblanadi.