{"id":54389,"date":"2019-12-25T00:00:00","date_gmt":"2019-12-24T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/indeksiruemoe-binarnoe-derevo"},"modified":"2020-02-18T14:02:23","modified_gmt":"2020-02-18T11:02:23","slug":"indeksiruemoe-binarnoe-derevo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","title":{"rendered":"\u0130ndekslenebilir ikili a\u011fa\u00e7","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/8ceb987e007db02de04d29f33185e8ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Bana a\u015fa\u011f\u0131daki t\u00fcrde bir g\u00f6rev verildi. A\u015fa\u011f\u0131daki i\u015flevselli\u011fi sa\u011flayan bir veri saklama konteyneri uygulamak gerekiyor: <\/p>\n<p><\/p>\n<ul>\n<li>yeni bir \u00f6\u011fe eklemek<\/li>\n<li>s\u0131ral\u0131 numara ile \u00f6\u011feyi silmek<\/li>\n<li>s\u0131ral\u0131 numara ile \u00f6\u011feyi almak<\/li>\n<li>veriler s\u0131ral\u0131 olarak saklan\u0131r<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Veriler s\u00fcrekli eklenip silindi\u011finden, yap\u0131 h\u0131zl\u0131 \u00e7al\u0131\u015fma h\u0131z\u0131n\u0131 sa\u011flamal\u0131d\u0131r. \u00d6ncelikle, bunu standart konteynerler kullanarak uygulamay\u0131 denedim <strong>std<\/strong>. Bu yol ba\u015far\u0131l\u0131 olmad\u0131 ve kendim bir \u015feyler uygulamam gerekti\u011fini anlad\u0131m. Akla gelen tek \u015fey, h\u0131zl\u0131 ekleme, silme ve verilerin s\u0131ral\u0131 bir \u015fekilde saklanmas\u0131n\u0131 sa\u011flad\u0131\u011f\u0131 i\u00e7in ikili arama a\u011fac\u0131 kullanmakt\u0131. T\u00fcm \u00f6\u011feleri nas\u0131l indeksleyece\u011fimi ve a\u011fac\u0131n de\u011fi\u015fti\u011finde indeksleri nas\u0131l yeniden hesaplayaca\u011f\u0131m\u0131 d\u00fc\u015f\u00fcnmem gerekiyordu.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">struct node_s {    \n    data_t data;\n\n    uint64_t weight; \/\/ d\u00fc\u011f\u00fcm\u00fcn a\u011f\u0131rl\u0131\u011f\u0131\n\n    node_t *left;\n    node_t *right;\n\n    node_t *parent;\n};<\/code><\/pre>\n<p><\/p>\n<p>Makalede daha fazla resim ve teori olacak, kod a\u015fa\u011f\u0131daki ba\u011flant\u0131dan g\u00f6r\u00fclebilir.<\/p>\n<p><\/p>\n<h2 id=\"ves\">\u00c7\u0259ki<\/h2>\n<p><\/p>\n<p>Bunun i\u00e7in a\u011fa\u00e7ta k\u00fc\u00e7\u00fck bir modifikasyon yap\u0131ld\u0131, d\u00fc\u011f\u00fcm hakk\u0131nda ek bilgi eklendi <strong>a\u011f\u0131rl\u0131k<\/strong> d\u00fc\u011f\u00fcm\u00fcn a\u011f\u0131rl\u0131\u011f\u0131. A\u011f\u0131rl\u0131k, bu d\u00fc\u011f\u00fcm\u00fcn <strong>alt d\u00fc\u011f\u00fcm say\u0131s\u0131d\u0131r<\/strong> + <strong>1<\/strong> (birim \u00f6\u011fenin a\u011f\u0131rl\u0131\u011f\u0131).<\/p>\n<p><\/p>\n<p>D\u00fc\u011f\u00fcm\u00fcn a\u011f\u0131rl\u0131\u011f\u0131n\u0131 alma fonksiyonu:<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">uint64_t bntree::get_child_weight(node_t *node) {\n    if (node) {\n        return node-&gt;weight;\n    }\n\n    return 0;\n}<\/code><\/pre>\n<p><\/p>\n<p>Yapra\u011f\u0131n a\u011f\u0131rl\u0131\u011f\u0131 ise <strong>0<\/strong>.<\/p>\n<p><\/p>\n<p>\u015eimdi b\u00f6yle bir a\u011fac\u0131n \u00f6rne\u011fini g\u00f6rselle\u015ftirelim. <strong>Siyah<\/strong> renkle d\u00fc\u011f\u00fcm\u00fcn anahtar\u0131 g\u00f6sterilecek (de\u011fer g\u00f6sterilmeyecek \u00e7\u00fcnk\u00fc buna gerek yok), <strong>k\u0131rm\u0131z\u0131<\/strong> \u2014 d\u00fc\u011f\u00fcm\u00fcn a\u011f\u0131rl\u0131\u011f\u0131, <strong>ye\u015fil<\/strong> \u2014 d\u00fc\u011f\u00fcm\u00fcn indeksi.<\/p>\n<p><\/p>\n<p>A\u011fac\u0131m\u0131z bo\u015fken, a\u011f\u0131rl\u0131\u011f\u0131 0'd\u0131r. K\u00f6k \u00f6\u011feyi ekleyelim:<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/2d4145039daee26582910556a40d2a5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>A\u011fac\u0131n a\u011f\u0131rl\u0131\u011f\u0131 1 olur, k\u00f6k \u00f6\u011fenin a\u011f\u0131rl\u0131\u011f\u0131 1'dir. K\u00f6k \u00f6\u011fenin a\u011f\u0131rl\u0131\u011f\u0131, a\u011fac\u0131n a\u011f\u0131rl\u0131\u011f\u0131d\u0131r.<\/p>\n<p><\/p>\n<p>Birka\u00e7 \u00f6\u011fe daha ekleyelim:<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/803cc4a65aa3d8a2fcb20fe325351cfa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/0aa12f41b822b4bb1e9fadb7564dc461.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/8566df9404037e92f53b315bc3304016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/1847e6ddffdb28d0a6d9a4949ebb5f80.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Yeni bir \u00f6\u011fe eklerken her seferinde, d\u00fc\u011f\u00fcmler \u00fczerinden inerek ge\u00e7ti\u011fimiz her d\u00fc\u011f\u00fcm\u00fcn a\u011f\u0131rl\u0131k sayac\u0131n\u0131 art\u0131r\u0131yoruz. Yeni bir d\u00fc\u011f\u00fcm olu\u015fturuldu\u011funda, a\u011f\u0131rl\u0131\u011f\u0131 belirlenir <strong>1<\/strong>. E\u011fer b\u00f6yle bir anahtara sahip d\u00fc\u011f\u00fcm zaten varsa, de\u011feri g\u00fcncelleriz ve yukar\u0131 k\u00f6ke do\u011fru, ge\u00e7ti\u011fimiz t\u00fcm d\u00fc\u011f\u00fcmlerin a\u011f\u0131rl\u0131k de\u011fi\u015fikliklerini iptal ederek geri d\u00f6neriz.<br \/>\nE\u011fer bir d\u00fc\u011f\u00fcm\u00fc siliyorsak, a\u015fa\u011f\u0131ya iniyor ve ge\u00e7ti\u011fimiz d\u00fc\u011f\u00fcmlerin a\u011f\u0131rl\u0131klar\u0131n\u0131 azalt\u0131yoruz. <\/p>\n<p><\/p>\n<h2 id=\"indeksy\">\u0130ndeksler<\/h2>\n<p><\/p>\n<p>\u015eimdi d\u00fc\u011f\u00fcmleri nas\u0131l indeksleyece\u011fimize ge\u00e7elim. D\u00fc\u011f\u00fcmlerin a\u00e7\u0131k bir \u015fekilde kendi indekslerini saklamad\u0131klar\u0131n\u0131, d\u00fc\u011f\u00fcmlerin a\u011f\u0131rl\u0131\u011f\u0131na dayanarak hesapland\u0131\u011f\u0131n\u0131 s\u00f6yleyebilirim. E\u011fer kendi indekslerini saklarlarsa, gerekecektir <strong>O(n)<\/strong> her a\u011fa\u00e7 de\u011fi\u015fikli\u011finden sonra t\u00fcm d\u00fc\u011f\u00fcmlerin indekslerini g\u00fcncellemek i\u00e7in zaman alacakt\u0131r.<br \/>\nG\u00f6rselle\u015ftirmeye ge\u00e7elim. A\u011fac\u0131m\u0131z bo\u015f, i\u00e7ine 1. d\u00fc\u011f\u00fcm\u00fc ekleyelim:<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/8a3b176f318cd077b1cf50ddf232e0da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\u0130lk d\u00fc\u011f\u00fcm indeksini al\u0131r <strong>0<\/strong>, \u015fimdi iki durum m\u00fcmk\u00fcn. \u0130lk durumda k\u00f6k \u00f6\u011fenin indeksi de\u011fi\u015fecek, ikincisinde de\u011fi\u015fmeyecek.<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/cb863be8f42385d3bbb2f46700a8cff3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00f6k\u00fcn sol alt a\u011fac\u0131 1 a\u011f\u0131rl\u0131\u011f\u0131ndad\u0131r.<\/p>\n<p><\/p>\n<p>\u0130kinci durum:<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/35eec59a81fc8b056c7e91daa3ee508e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00f6k\u00fcn indeksi de\u011fi\u015fmedi, \u00e7\u00fcnk\u00fc sol alt a\u011fac\u0131n\u0131n a\u011f\u0131rl\u0131\u011f\u0131 0 olarak kald\u0131.<\/p>\n<p><\/p>\n<p>Bir d\u00fc\u011f\u00fcm\u00fcn indeksi nas\u0131l hesaplan\u0131r, bu sol alt a\u011fac\u0131n\u0131n a\u011f\u0131rl\u0131\u011f\u0131 + ebeveynden al\u0131nan say\u0131d\u0131r. O say\u0131 nedir? Bu indeks sayac\u0131d\u0131r, ba\u015flang\u0131\u00e7ta de\u011feri <strong>0<\/strong>, \u00e7\u00fcnk\u00fc k\u00f6k\u00fcn ebeveyni yoktur. Daha sonra her \u015fey sol \u00e7ocu\u011fa m\u0131 yoksa sa\u011f \u00e7ocu\u011fa m\u0131 gitti\u011fimize ba\u011fl\u0131d\u0131r. Sol \u00e7ocu\u011fa gitmemiz durumunda sayaca hi\u00e7bir \u015fey eklenmez. Sa\u011f \u00e7ocu\u011fa gidersek, mevcut d\u00fc\u011f\u00fcm\u00fcn indeksine ekleriz.<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0130ndekslenebilir ikili a\u011fa\u00e7\" src=\"\/wp-content\/uploads\/2019\/12\/d328174370ef52c646d8689cce977302.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>M\u0259s\u0259l\u0259n, 8 a\u00e7ar\u0131 il\u0259 elementin indeksinin nec\u0259 hesabland\u0131\u011f\u0131n\u0131 n\u0259z\u0259rd\u0259n ke\u00e7ir\u0259k (k\u00f6kl\u00fc sa\u011f u\u015faq). Bu \"K\u00f6k \u0130nsi\" + \"8 a\u00e7ar\u0131 olan d\u00fcy\u00fcn\u00fcn sol alt a\u011fac\u0131n\u0131n \u00e7\u0259kisi\" + \"1\" == 3 + 2 + 1 == <strong>6<\/strong><br \/>\n6 a\u00e7ar\u0131 olan elementin indeksi \"K\u00f6k \u0130nsi\" + 1 == 3 + 1 == <strong>4<\/strong><\/p>\n<p><\/p>\n<p>Dolay\u0131s\u0131yla bir \u00f6\u011feyi indeksle almak i\u00e7in gereken zaman <strong>O(log n)<\/strong>, \u00e7\u00fcnk\u00fc gerekli eleman\u0131 elde etmek i\u00e7in \u00f6nce onu bulmam\u0131z gerekir (k\u00f6kten o elemana inmemiz gerekir).<\/p>\n<p><\/p>\n<h2 id=\"glubina\">Derinlik<\/h2>\n<p><\/p>\n<p>A\u011f\u0131rl\u0131\u011fa dayanarak a\u011fac\u0131n derinli\u011fini de hesaplayabiliriz. Bu, dengelemek i\u00e7in gereklidir.<br \/>\nBunun i\u00e7in, mevcut d\u00fc\u011f\u00fcm\u00fcn a\u011f\u0131rl\u0131\u011f\u0131n\u0131, bu a\u011f\u0131rl\u0131ktan b\u00fcy\u00fck veya e\u015fit olan 2'nin ilk kuvvetine yuvarlamak ve ondan ikili logaritma almak gerekir. B\u00f6ylece, a\u011fac\u0131n dengeli oldu\u011fu varsay\u0131m\u0131 alt\u0131nda a\u011fac\u0131n derinli\u011fini elde ederiz. Yeni bir eleman eklendikten sonra a\u011fa\u00e7 dengelenir. A\u011fa\u00e7lar\u0131 dengelemekle ilgili teoriyi burada vermeyece\u011fim. Kaynak kodlarda dengeleme i\u015flevi bulunmaktad\u0131r.<\/p>\n<p><\/p>\n<p>A\u011f\u0131rl\u0131\u011f\u0131 derinli\u011fe d\u00f6n\u00fc\u015ft\u00fcrme kodu.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">\/*\n * \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 2, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u043e\u0432\u043d\u043e x\n *\/\nuint64_t bntree::cpl2(uint64_t x) {\n    x = x - 1;\n    x = x | (x &gt;&gt; 1);\n    x = x | (x &gt;&gt; 2);\n    x = x | (x &gt;&gt; 4);\n    x = x | (x &gt;&gt; 8);\n    x = x | (x &gt;&gt; 16);\n    x = x | (x &gt;&gt; 32);\n\n    return x + 1;\n}\n\n\/*\n * \u0414\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u043b\u043e\u0433\u0430\u0440\u0438\u0444\u043c \u043e\u0442 \u0447\u0438\u0441\u043b\u0430\n *\/\nlong bntree::ilog2(long d) {\n    int result;\n    std::frexp(d, &amp;result);\n    return result - 1;\n}\n\n\/*\n * \u0412\u0435\u0441 \u043a \u0433\u043b\u0443\u0431\u0438\u043d\u0435\n *\/\nuint64_t bntree::weight_to_depth(node_t *p) {\n    if (p == NULL) {\n        return 0;\n    }\n\n    if (p-&gt;weight == 1) {\n        return 1;\n    } else if (p-&gt;weight == 2) {\n        return 2;\n    }\n\n    return this-&gt;ilog2(this-&gt;cpl2(p-&gt;weight));\n}<\/code><\/pre>\n<p><\/p>\n<h2 id=\"itogi\">Yekunlar<\/h2>\n<p><\/p>\n<ul>\n<li>Yeni bir eleman\u0131n eklenmesi <strong>O(log n)<\/strong><\/li>\n<li>s\u0131ral\u0131 numara ile eleman\u0131n silinmesi <strong>O(log n)<\/strong><\/li>\n<li>s\u0131ral\u0131 numara ile eleman\u0131n al\u0131nmas\u0131 <strong>O(log n)<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>H\u0131z <strong>O(log n)<\/strong> Verilerin s\u0131ral\u0131 bir bi\u00e7imde saklanmas\u0131n\u0131n bedelini \u00f6d\u00fcyoruz. <\/p>\n<p><\/p>\n<p>B\u00f6yle bir yap\u0131n\u0131n nerede i\u015fe yarayaca\u011f\u0131na dair fikrim yok. Sadece a\u011fa\u00e7lar\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 tekrar anlamak i\u00e7in bir problem. \u0130lgilendi\u011finiz i\u00e7in te\u015fekk\u00fcr ederim.<\/p>\n<p><\/p>\n<h2 id=\"ssylki\">Ba\u011flant\u0131lar<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dvjdjvu\/bntree\">A\u011fa\u00e7 kaynak kodu<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Projede, \u00e7al\u0131\u015fma h\u0131z\u0131n\u0131 test etmek i\u00e7in test verileri bulunmaktad\u0131r. A\u011fa\u00e7 <strong>1000000<\/strong> \u00f6\u011felerle doldurulur. Ve ard\u0131\u015f\u0131k olarak silme, ekleme ve elemanlar\u0131 alma i\u015flemleri ger\u00e7ekle\u015ftirilir <strong>1000000<\/strong> kez. Yani <strong>3000000<\/strong> i\u015flemler. Sonu\u00e7 olduk\u00e7a iyi oldu ~ 8 saniye.<\/p>\n<p>M\u0259nb\u0259: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/481372\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b: \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0432\u0435\u0449\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438\u0437 std. \u042d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u043d\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54389","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"az_AZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-24T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47\u0130ndekslenmi\u015f ikili a\u011fa\u00e7 | ProHoster","description":"Bana \u015f\u00f6yle bir problem geldi.","canonical_url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"az_AZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e | ProHoster","og:description":"\u041f\u043e\u043f\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430.","og:url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-24T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54389","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 11:11:41","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:07:24","updated":"2026-01-24 11:11:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/54389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/comments?post=54389"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/54389\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media?parent=54389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/categories?post=54389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/tags?post=54389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}