{"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\/et\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","title":{"rendered":"Indekseeritav binaarne puu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/8ceb987e007db02de04d29f33185e8ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Mul on selline \u00fclesanne. On vajalik teostada andmete salvestamise konteiner, mis tagab j\u00e4rgmise funktsionaalsuse: <\/p>\n<p><\/p>\n<ul>\n<li>lisada uus element<\/li>\n<li>kustutada element j\u00e4rjestiku numbri alusel<\/li>\n<li>saada element j\u00e4rjestiku numbri alusel<\/li>\n<li>andmed on salvestatud sorteeritud kujul<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Andmeid lisatakse ja kustutatakse pidevalt, struktuur peab tagama kiire t\u00f6\u00f6 kiirus. Alguses proovisin sellist asja teostada, kasutades standardseid konteinerid <strong>std<\/strong>. See tee ei olnud edukas ja m\u00f5istsin, et pean midagi ise v\u00e4lja m\u00f5tlema. Ainus idee, mis p\u00e4he tuli, oli kasutada otsingubinaarset puud. Kuna see vastab kiirete lisamise, kustutamise ja andmete sorteeritud kujul s\u00e4ilitamise n\u00f5udmistele. Alles j\u00e4i v\u00e4lja m\u00f5elda, kuidas k\u00f5ik elemendid indekseerida ja indeksid \u00fcmber arvutada, kui puu muutub.<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">struct node_s {    \n    data_t data;\n\n    uint64_t weight; \/\/ s\u00f5lme kaal\n\n    node_t *left;\n    node_t *right;\n\n    node_t *parent;\n};<\/code><\/pre>\n<p><\/p>\n<p>Artiklis on rohkem pilte ja teooriat kui koodi. Koodi saab vaadata allpool olevast lingist.<\/p>\n<p><\/p>\n<h2 id=\"ves\">Kaal<\/h2>\n<p><\/p>\n<p>Selleks puu veidi muudetud, lisatud t\u00e4iendav teave <strong>kaalu<\/strong> s\u00f5lme. S\u00f5lme kaal on <strong>antud s\u00f5lme j\u00e4rglaste arv<\/strong> + <strong>1<\/strong> (\u00fche elemendi kaal).<\/p>\n<p><\/p>\n<p>S\u00f5lme kaalu saamise funktsioon:<\/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>Lehe puhul on tema kaal vastavalt <strong>0<\/strong>.<\/p>\n<p><\/p>\n<p>Siis liigume visuaalse esitlemise juurde selle puu n\u00e4ite osas. <strong>Mustas<\/strong> v\u00e4rv n\u00e4itab s\u00f5lme v\u00f5tit (v\u00e4\u00e4rtust ei n\u00e4idata, kuna selleks pole vajadust), <strong>punane<\/strong> \u2014 s\u00f5lme kaal, <strong>roheline<\/strong> \u2014 s\u00f5lme indeks.<\/p>\n<p><\/p>\n<p>Kui puu on meil t\u00fchi, siis on selle kaal 0. Lisame sinna juureelementi:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/2d4145039daee26582910556a40d2a5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Puud kaal t\u00f5useb 1, juureelemendi kaal on 1. Juureelemendi kaal on puu kaal.<\/p>\n<p><\/p>\n<p>Lisame veel m\u00f5ned elemendid:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/803cc4a65aa3d8a2fcb20fe325351cfa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/0aa12f41b822b4bb1e9fadb7564dc461.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/8566df9404037e92f53b315bc3304016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/1847e6ddffdb28d0a6d9a4949ebb5f80.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Igal lisamisel liigume s\u00f5lmedes alla ja suurendame iga m\u00f6\u00f6dunud s\u00f5lme kaalu arvestust. Uue s\u00f5lme loomisel m\u00e4\u00e4ratakse talle kaal <strong>1<\/strong>. Kui s\u00f5lm sellise v\u00f5tmega juba eksisteerib, siis kirjutame v\u00e4\u00e4rtuse \u00fcle ja l\u00e4heme tagasi juure \u00fcles t\u00fchistades kaalu muutused k\u00f5igis s\u00f5lmedes, mille me l\u00e4bisime.<br \/>\nKui s\u00f5lm kustutatakse, siis liigume alla ja dekrementeerime m\u00f6\u00f6dunud s\u00f5lmede kaalu. <\/p>\n<p><\/p>\n<h2 id=\"indeksy\">Indeksid<\/h2>\n<p><\/p>\n<p>N\u00fc\u00fcd liigume edasi, kuidas indekseerida s\u00f5lmi. S\u00f5lmed ei hoia oma indeksi, see arvutatakse s\u00f5lmede kaalude p\u00f5hjal. Kui nad hoiaksid oma indeksi, oleks vajalik <strong>O(n)<\/strong> aega k\u00f5igi s\u00f5lmede indeksite uuendamiseks p\u00e4rast puu iga muutmist.<br \/>\nLiigume visuaalse esitlemise juurde. Meie puu on t\u00fchi, lisame sinna esimese s\u00f5lme:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/8a3b176f318cd077b1cf50ddf232e0da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Esimesel s\u00f5lmel on indeks <strong>0<\/strong>, ning n\u00fc\u00fcd on kaks v\u00f5imalust. Esimesel juhul muutub juure elemendi indeks, teisel juhul ei muutu.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/cb863be8f42385d3bbb2f46700a8cff3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Juurel on vasak alampuu kaalu 1.<\/p>\n<p><\/p>\n<p>Teine juhtum:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/35eec59a81fc8b056c7e91daa3ee508e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Juure indeks ei muutunud, kuna tema vasaku alampuu kaal j\u00e4i 0-ks.<\/p>\n<p><\/p>\n<p>Kuidas arvutatakse s\u00f5lme indeks, on see tema vasaku alampuu kaal + erinevate arvu, mis edastatakse vanematelt. Mis number see on? See on indeksite loendaja, algselt on see <strong>0<\/strong>, kuna juurel ei ole vanemat. Edasi s\u00f5ltub k\u00f5ik sellest, kuhu me l\u00e4heme, kas vasakule lapsele v\u00f5i paremale. Kui vasakule, siis loendajale ei lisata midagi. Kui paremale, siis lisame jooksva s\u00f5lme indeksi.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarne puu\" src=\"\/wp-content\/uploads\/2019\/12\/d328174370ef52c646d8689cce977302.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>N\u00e4iteks, kuidas arvutatakse elemendi indeks, mille v\u00f5ti on 8 (juure parempoolne laps). See on &#171;Juure indeks&#187; + &#171;Vasaku alampuu kaal s\u00f5lmel, mille v\u00f5ti on 8&#187; + &#171;1&#187; == 3 + 2 + 1 == <strong>6<\/strong><br \/>\nElemendi indeks, mille v\u00f5ti on 6, on &#171;Juure indeks&#187; + 1 == 3 + 1 == <strong>4<\/strong><\/p>\n<p><\/p>\n<p>Seega, et saada, eemaldada element indeksi j\u00e4rgi on vajalik aeg <strong>O(log n)<\/strong>, kuna soovitud elemendi saamiseks peame esmalt selle leidma (minema juurest kuni sellele elemendile).<\/p>\n<p><\/p>\n<h2 id=\"glubina\">S\u00fcgavus<\/h2>\n<p><\/p>\n<p>Samaaegselt saab ka puu s\u00fcgavust arvutada kaalu p\u00f5hjal. Vajalik tasakaalu saavutamiseks.<br \/>\nSelleks tuleb joonistada praeguse s\u00f5lme kaal k\u00f5ige v\u00e4iksema 2 astme arvuni, mis on suurem v\u00f5i v\u00f5rdne antud kaaluga, ja v\u00f5tta sellest binaarlogaritm. Nii saame puu s\u00fcgavuse, tingimusel et see on tasakaalus. Puu tasakaalustatakse p\u00e4rast uue elemendi sisestamist. Teooriat puude tasakaalustamise kohta ma siin ei puuduta. Algkoodis on esitatud tasakaalustamise funktsioon.<\/p>\n<p><\/p>\n<p>Kood kaalu viimiseks s\u00fcgavusse.<\/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\">Summary<\/h2>\n<p><\/p>\n<ul>\n<li>Uue elemendi sisestamine toimub <strong>O(log n)<\/strong><\/li>\n<li>Elemendi eemaldamine j\u00e4rjestusnumbri alusel toimub <strong>O(log n)<\/strong><\/li>\n<li>Elemendi saamine j\u00e4rjestusnumbri alusel toimub <strong>O(log n)<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>Kiirus <strong>O(log n)<\/strong> me maksame selle eest, et k\u00f5ik andmed on l\u00f5ikesorteeritud. <\/p>\n<p><\/p>\n<p>Ma ei tea, kus selline struktuur kasulik v\u00f5ib olla. Lihtsalt \u00fclesanne, et veel kord aru saada, kuidas puud t\u00f6\u00f6tavad. Ait\u00e4h t\u00e4helepanu eest.<\/p>\n<p><\/p>\n<h2 id=\"ssylki\">Viidatud lingid<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dvjdjvu\/bntree\">Puu l\u00e4htekood<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Projekt sisaldab testandmeid t\u00f6\u00f6 kiirus kontrollimiseks. Puu t\u00e4idetakse <strong>1000000<\/strong> elementidega. Ja toimub elementide j\u00e4rjestikune eemaldamine, sisestamine ja hankimine <strong>1000000<\/strong> korda. See t\u00e4hendab <strong>3000000<\/strong> operatsioone. Tulemuseks oli t\u00e4iesti korralik ~ 8 sekundit.<\/p>\n<p>Allikas: <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.1.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\/et\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Indekseeritav binaarne puu | ProHoster","description":"Sattusin j\u00e4rgmise t\u00fc\u00fcpi \u00fclesande otsa.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/indeksiruemoe-binarnoe-derevo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/54389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54389"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54389\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}