{"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\/lv\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","title":{"rendered":"Indeks\u0113jamais bin\u0101rais koks","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/8ceb987e007db02de04d29f33185e8ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Man bija uzdevums \u0161\u0101da veida. Nepiecie\u0161ams izstr\u0101d\u0101t datu glab\u0101\u0161anas konteineru, kas nodro\u0161ina \u0161\u0101du funkcionalit\u0101ti: <\/p>\n<p><\/p>\n<ul>\n<li>ievietot jaunu elementu<\/li>\n<li>iz\u0146emt elementu p\u0113c sec\u012bbas numura<\/li>\n<li>ieg\u016bt elementu p\u0113c sec\u012bbas numura<\/li>\n<li>dati tiek glab\u0101ti sak\u0101rtot\u0101 veid\u0101<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dati tiek nep\u0101rtraukti pievienoti un iz\u0146emti, t\u0101d\u0113\u013c strukt\u016brai j\u0101nodro\u0161ina \u0101tra darb\u012bbas \u0101trums. S\u0101kum\u0101 m\u0113\u0123in\u0101ju \u0161o ideju \u012bstenot, izmantojot standarta konteinerus no <strong>std<\/strong>. \u0160is ce\u013c\u0161 neizdev\u0101s un rad\u0101s sapratne, ka ir j\u0101izstr\u0101d\u0101 kaut kas pa\u0161am. Vien\u012bgais, kas ien\u0101ca pr\u0101t\u0101, bija izmantot bin\u0101ro me\u017eu mekl\u0113\u0161anai. T\u0101 k\u0101 tas atbilst \u0101tras ievieto\u0161anas, iz\u0146em\u0161anas un datu glab\u0101\u0161anas sak\u0101rtot\u0101 veid\u0101 pras\u012bb\u0101m. Palika tikai izdom\u0101t, k\u0101 indeks\u0113t visus elementus un p\u0101rskait\u012bt indeksus, kad me\u017es main\u0101s.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">struct node_s {    \n    data_t data;\n\n    uint64_t weight; \/\/ mezgla svars\n\n    node_t *left;\n    node_t *right;\n\n    node_t *parent;\n};<\/code><\/pre>\n<p><\/p>\n<p>\u0160aj\u0101 rakst\u0101 b\u016bs vair\u0101k att\u0113lu un teorijas nek\u0101 koda. Kodu var\u0113s apskat\u012bt saitei lej\u0101.<\/p>\n<p><\/p>\n<h2 id=\"ves\">Svars<\/h2>\n<p><\/p>\n<p>T\u0101p\u0113c koks tika nedaudz modific\u0113ts, pievienojot papildu inform\u0101ciju par <strong>svaru<\/strong> mezglam. Mezgls svars ir <strong>p\u0113cte\u010du skaits \u0161im mezglam<\/strong> + <strong>1<\/strong> (viena elementa svars).<\/p>\n<p><\/p>\n<p>Funkcija, kas ieg\u016bst mezgla svaru:<\/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>Lapu svaram attiec\u012bgi ir <strong>0<\/strong>.<\/p>\n<p><\/p>\n<p>T\u0101l\u0101k p\u0101riesim pie konkr\u0113ta \u0161\u0101da koka piem\u0113ra vizu\u0101l\u0101 att\u0113la. <strong>Melns<\/strong> kr\u0101s\u0101 tiks att\u0113lots mezgla atsl\u0113ga (v\u0113rt\u012bba netiks r\u0101d\u012bta, jo tam nav vajadz\u012bbas), <strong>sarkans<\/strong> \u2014 mezgla svars, <strong>za\u013c\u0161<\/strong> \u2014 mezgla indekss.<\/p>\n<p><\/p>\n<p>Kad koks ir tuk\u0161s, tad t\u0101 svars ir 0. Pievienosim tam saknes elementu:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/2d4145039daee26582910556a40d2a5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Koka svars k\u013c\u016bst 1, saknes elementa svars ir 1. Saknes elements ir koka svars.<\/p>\n<p><\/p>\n<p>Pievienojam v\u0113l da\u017eus elementus:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/803cc4a65aa3d8a2fcb20fe325351cfa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/0aa12f41b822b4bb1e9fadb7564dc461.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/8566df9404037e92f53b315bc3304016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/1847e6ddffdb28d0a6d9a4949ebb5f80.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Katru reizi, kad pievieno jaunu elementu, m\u0113s nok\u0101pjam pa mezgliem uz leju un palielin\u0101m katra iziet\u0101 mezgla svara skait\u012bt\u0101ju. Izveidojot jaunu mezglu, tam tiek pie\u0161\u0137irts svars <strong>1<\/strong>. Ja mezglam ar \u0161\u0101du atsl\u0113gu jau past\u0101v, tad p\u0101rrakst\u0101m v\u0113rt\u012bbu un dodamies atpaka\u013c uz sakni, atc\u0113lot svaru izmai\u0146as visos mezglos, kurus m\u0113s esam izg\u0101ju\u0161i.<br \/>\nJa notiek mezgla dz\u0113\u0161ana, tad m\u0113s nok\u0101pjam uz leju un dekremet\u0113jam izg\u0101ju\u0161o mezglu svarus. <\/p>\n<p><\/p>\n<h2 id=\"indeksy\">Indeksi<\/h2>\n<p><\/p>\n<p>Tagad p\u0101riesim pie t\u0101, k\u0101 indeks\u0113t mezglus. Mezgli ac\u012bmredzami nesaglab\u0101 savu indeksu, tas tiek apr\u0113\u0137in\u0101ts, pamatojoties uz mezglu svaru. Ja tie saglab\u0101tu savu indeksu, tas pras\u012btu <strong>O(n)<\/strong> laiku, lai atjaunin\u0101tu visu mezglu indeksus p\u0113c katras koka izmai\u0146as.<br \/>\nP\u0101riesim pie vizu\u0101la att\u0113lojuma. M\u016bsu koks ir tuk\u0161s, pievienosim tam pirmo mezglu:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/8a3b176f318cd077b1cf50ddf232e0da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pirmajam mezglam ir indekss <strong>0<\/strong>, un tagad iesp\u0113jami ir 2 gad\u012bjumi. Pirmaj\u0101 gad\u012bjum\u0101 saknes indekss main\u012bsies, otraj\u0101 nemain\u012bsies.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/cb863be8f42385d3bbb2f46700a8cff3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Saknes kreisajam apak\u0161kokam ir svars 1.<\/p>\n<p><\/p>\n<p>Otrais gad\u012bjums:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/35eec59a81fc8b056c7e91daa3ee508e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Saknes indekss nemain\u012bj\u0101s, jo t\u0101s kreis\u0101 apak\u0161koka svars palika 0.<\/p>\n<p><\/p>\n<p>K\u0101 tiek apr\u0113\u0137in\u0101ts mezgla indekss, tas ir t\u0101 kreis\u0101 apak\u0161koka svars + skaitlis, ko nodod vec\u0101ks. Kas tas ir par skaitli?, Tas ir indeksu skait\u012bt\u0101js, s\u0101kum\u0101 tas ir <strong>0<\/strong>, jo saknei nav vec\u0101ka. T\u0101l\u0101k viss ir atkar\u012bgs no t\u0101, uz kurieni m\u0113s virz\u0101mies, uz kreiso b\u0113rnu vai labo. Ja uz kreiso, tad skait\u012bt\u0101jam nekas netiek pievienots. Ja uz labo, tad pievienojam pa\u0161reiz\u0113j\u0101 mezgla indeksu.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indeks\u0113jamais bin\u0101rais koks\" src=\"\/wp-content\/uploads\/2019\/12\/d328174370ef52c646d8689cce977302.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Piem\u0113ram, k\u0101 apr\u0113\u0137ina elementa ar atsl\u0113gu 8 (labais b\u0113rns sakn\u0113) indeksu. Tas ir \"Saknes indekss\" + \"kreis\u0101 apak\u0161koka svars mezglam ar atsl\u0113gu 8\" + \"1\" == 3 + 2 + 1 == <strong>6<\/strong><br \/>\nElementa ar atsl\u0113gu 6 indekss b\u016bs \"Saknes indekss\" + 1 == 3 + 1 == <strong>4<\/strong><\/p>\n<p><\/p>\n<p>T\u0101d\u0113j\u0101di, lai ieg\u016btu vai dz\u0113stu elementu p\u0113c indeksa, nepiecie\u0161ams laiks <strong>O(log n)<\/strong>, jo, lai ieg\u016btu vajadz\u012bgo elementu, mums vispirms ir j\u0101atrod tas (j\u0101non\u0101k no saknes l\u012bdz \u0161im elementam).<\/p>\n<p><\/p>\n<h2 id=\"glubina\">Dzi\u013cums<\/h2>\n<p><\/p>\n<p>Pamatojoties uz svaru, var ar\u012b apr\u0113\u0137in\u0101t koka dzi\u013cumu. Nepiecie\u0161ams, lai l\u012bdzsvarotu.<br \/>\nLai to izdar\u012btu, pa\u0161reiz\u0113j\u0101 mezgla svars j\u0101noapa\u013co l\u012bdz pirmajam skaitlim, kas ir 2 pak\u0101p\u0113 un ir liel\u0101ks vai vien\u0101ds ar dot\u0101 svara, un j\u0101\u0146em tam bin\u0101rais logaritms. T\u0101d\u0113j\u0101di m\u0113s ieg\u016bsim koka dzi\u013cumu, pie\u0146emot, ka tas ir l\u012bdzsvarots. Koks tiek l\u012bdzsvarots p\u0113c jauna elementa pievieno\u0161anas. Teoriju par to, k\u0101 l\u012bdzsvarot kokus, neaprakst\u012b\u0161u. Avota kod\u0101 ir pieejama l\u012bdzsvaro\u0161ana funkcija.<\/p>\n<p><\/p>\n<p>Kods, lai p\u0101rveidotu svaru par dzi\u013cumu.<\/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\">Secin\u0101jumi<\/h2>\n<p><\/p>\n<ul>\n<li>jaun\u0101 elementa pievieno\u0161ana notiek <strong>O(log n)<\/strong><\/li>\n<li>elementa dz\u0113\u0161ana p\u0113c sec\u012bbas notiek <strong>O(log n)<\/strong><\/li>\n<li>elementa ieg\u016b\u0161ana p\u0113c sec\u012bbas notiek <strong>O(log n)<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>\u0100trums <strong>O(log n)<\/strong> m\u0113s maks\u0101jam par to, ka visi dati tiek uzglab\u0101ti sak\u0101rtot\u0101 form\u0101. <\/p>\n<p><\/p>\n<p>Nezinu, kur \u0161\u0101da strukt\u016bra var noder\u0113t. Tas ir vienk\u0101r\u0161i uzdevums, lai v\u0113lreiz saprastu, k\u0101 darbojas koki. Paldies par uzman\u012bbu.<\/p>\n<p><\/p>\n<h2 id=\"ssylki\">Saites<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dvjdjvu\/bntree\">Koka avota kods<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Projekt\u0101 ir ietverti test\u0113\u0161anas dati \u0101truma p\u0101rbaudei. Koks tiek aizpild\u012bts <strong>1000000<\/strong> elementi. Un notiek sec\u012bga dz\u0113\u0161ana, ievieto\u0161ana un elementu ieg\u016b\u0161ana <strong>1000000<\/strong> reizes. Tas ir <strong>3000000<\/strong> oper\u0101cijas. Rezult\u0101ts izr\u0101d\u012bj\u0101s diezgan labs ~ 8 sekundes.<\/p>\n<p>Avots: <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.4 - 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\/lv\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/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\udd47Indeks\u0113jams bin\u0101rais koks | ProHoster","description":"Man uzdota uzdevuma veids.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/54389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=54389"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54389\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=54389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=54389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=54389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}