{"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 binaarpuu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/8ceb987e007db02de04d29f33185e8ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tekkis mulle j\u00e4rgmine \u00fclesanne. On vajalik luua andmete salvestus konteiner, mis tagab j\u00e4rgmised funktsioonid: <\/p>\n<p><\/p>\n<ul>\n<li>uus element sisestada<\/li>\n<li>eemaldada element j\u00e4rjekorranumbriga<\/li>\n<li>saada element j\u00e4rjekorranumbriga<\/li>\n<li>andmed hoitakse sorteeritud kujul<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Andmed lisatakse ja eemaldatakse pidevalt, struktuur peab tagama kiire t\u00f6\u00f6 kiirus. Esiteks proovisin midagi sellist rakendada, kasutades standardseid konteinerite mooduleid <strong>std<\/strong>. See tee ei viinud edu, ja mul tekkis arusaam, et tuleb midagi ise rakendada. Ainus, mis m\u00f5tteis oli, oli kasutada binaarset otsingupuud. Kuna see vastab kiire sisestamise, eemaldamise ja andmete hoiustamise sorteeritud kujul n\u00f5udmistele. J\u00e4igi ainult v\u00e4lja m\u00f5elda, kuidas indekseerida k\u00f5ik elemendid ja \u00fcmber arvutada indeksid, 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 allolevalt lingilt.<\/p>\n<p><\/p>\n<h2 id=\"ves\">Kaal<\/h2>\n<p><\/p>\n<p>Selleks l\u00e4biviidud puu v\u00e4ikesele modifikatsioonile, lisati t\u00e4iendav teave <strong>kaalu kohta<\/strong> s\u00f5lm. S\u00f5lme kaal on <strong>selle s\u00f5lme j\u00e4rglaste arv<\/strong> + <strong>1<\/strong> (\u00fcksiku 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 kaal vastavalt <strong>0<\/strong>.<\/p>\n<p><\/p>\n<p>Liigume edasi, et visuaalselt tutvuda sellise puu n\u00e4itega. <strong>Must<\/strong> v\u00e4rv n\u00e4itab s\u00f5lme v\u00f5tme (v\u00e4\u00e4rtust ei n\u00e4idata, kuna sellega pole mingit vajadust), <strong>punane<\/strong> \u2013 s\u00f5lme kaal, <strong>roheline<\/strong> \u2013 s\u00f5lme indeks.<\/p>\n<p><\/p>\n<p>Kui puu on t\u00fchi, on selle kaal 0. Lisame sellesse juurs\u00f5lme:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/2d4145039daee26582910556a40d2a5c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Puud on kaalu 1, juurs\u00f5lme kaal on 1. Juurs\u00f5lme kaal on puu kaal.<\/p>\n<p><\/p>\n<p>Lisame veel m\u00f5ned elemendid:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/803cc4a65aa3d8a2fcb20fe325351cfa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/0aa12f41b822b4bb1e9fadb7564dc461.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/8566df9404037e92f53b315bc3304016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/1847e6ddffdb28d0a6d9a4949ebb5f80.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Iga kord, kui lisame uue elemendi, laskume allapoole s\u00f5lmedes ja suurendame iga l\u00e4bitud s\u00f5lme kaalu. Uuele s\u00f5lmele m\u00e4\u00e4ratakse kaal <strong>1<\/strong>. Kui s\u00f5lm sellise v\u00f5tmega juba eksisteerib, siis kirjutame v\u00e4\u00e4rtuse \u00fcle ja liigume tagasi juure poole, t\u00fchistades k\u00f5igi l\u00e4bitud s\u00f5lmede kaalu muutmised.<br \/>\nKui s\u00f5lme kustutatakse, liigume alla ja v\u00e4hendame l\u00e4bitud s\u00f5lmede kaalu. <\/p>\n<p><\/p>\n<h2 id=\"indeksy\">Indeksid<\/h2>\n<p><\/p>\n<p>N\u00fc\u00fcd liigume edasi selle juurde, kuidas indekseerida s\u00f5lmed. S\u00f5lmed ei hoia oma indeksi, see arvutatakse s\u00f5lmede kaalu p\u00f5hjal. Kui nad hoidsid oma indeksi, siis oleks vaja <strong>O(n)<\/strong> aega, et v\u00e4rskendada k\u00f5igi s\u00f5lmede indekseid p\u00e4rast iga puu muutust.<br \/>\nLiigume visuaalse esituse juurde. Meie puu on t\u00fchi, lisame sellesse 1. s\u00f5lme:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/8a3b176f318cd077b1cf50ddf232e0da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Esimese s\u00f5lme indeks on <strong>0<\/strong>, ja n\u00fc\u00fcd on v\u00f5imalikud 2 juhtumit. Esimeses muutub juure elemendi indeks, teises ei muutu.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/cb863be8f42385d3bbb2f46700a8cff3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Juurel kaal vasakul alampuul on 1.<\/p>\n<p><\/p>\n<p>Teine juhtum:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" src=\"\/wp-content\/uploads\/2019\/12\/35eec59a81fc8b056c7e91daa3ee508e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Juure indeksi ei muudetud, kuna tema vasaku alampuu kaal j\u00e4i 0-ks.<\/p>\n<p><\/p>\n<p>Kuidas arvutatakse s\u00f5lme indeks, see on tema vasaku alampuu kaal + number, mis on edasi antud vanemalt. Mis see number on? See on indeksise suvand, algselt on see <strong>0<\/strong>, kuna juurel ei ole vanemat. Edasi s\u00f5ltub k\u00f5ik sellest, kuhu me laskume - vasakule lapsele v\u00f5i paremale. Kui vasakule, siis indeksile ei lisata midagi. Kui paremale, siis lisame praeguse s\u00f5lme indeksi.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Indekseeritav binaarpuu\" 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\u00f5tme v\u00e4\u00e4rtus on 8 (juure parempoolne laps). See on &#171;Juure indeks&#187; + &#171;vasaku alampuu kaal s\u00f5lmel, mille v\u00f5tme v\u00e4\u00e4rtus on 8&#187; + &#171;1&#187; == 3 + 2 + 1 == <strong>6<\/strong><br \/>\nElemendi, mille v\u00f5tme v\u00e4\u00e4rtus on 6, indeks on &#171;Juure indeks&#187; + 1 == 3 + 1 == <strong>4<\/strong><\/p>\n<p><\/p>\n<p>Seega vajab elemendi indeksi p\u00f5hjal saamine ja eemaldamine aega <strong>O(log n)<\/strong>, kuna et saada vajalik element, peame selle esmalt leidma (p\u00e4randama juurest sellele elemendile).<\/p>\n<p><\/p>\n<h2 id=\"glubina\">S\u00fcgavus<\/h2>\n<p><\/p>\n<p>Kaalust l\u00e4htudes saab samuti arvutada puu s\u00fcgavuse, mis on vajalik tasakaalustamiseks.<br \/>\nSel eesm\u00e4rgil tuleb praeguse s\u00f5lme kaal \u00fcmardada l\u00e4hima 2 astme numbrini, mis on suurem v\u00f5i v\u00f5rdne antud kaaluga, ja selle p\u00f5hjal v\u00f5tta binaarlogar\u00fctm. Nii saame puu s\u00fcgavuse, eeldusel et see on tasakaalus. Puu tasakaalustatakse uue elemendi lisamise j\u00e4rel. Teooriat sellest, kuidas puid tasakaalustada, ma ei too. Allika koodides on esitatud tasakaalustamise funktsioon.<\/p>\n<p><\/p>\n<p>Koodi kaalude viimist s\u00fcgavusesse.<\/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\">Kokkuv\u00f5te<\/h2>\n<p><\/p>\n<ul>\n<li>uue elemendi lisamine toimub <strong>O(log n)<\/strong><\/li>\n<li>elemendi eemaldamine j\u00e4rjestusnumbriga toimub <strong>O(log n)<\/strong><\/li>\n<li>elemendi saamine j\u00e4rjestusnumbriga toimub <strong>O(log n)<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>Kiirus <strong>O(log n)<\/strong> maksame selle eest, et k\u00f5ik andmed on salvestatud sorteeritud kujul. <\/p>\n<p><\/p>\n<p>Kus see struktuur v\u00f5iks olla kasulik \u2014 ma ei tea. 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\">Lingid<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dvjdjvu\/bntree\">Algne puukood<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Projekt sisaldab testandmeid t\u00f6\u00f6kiirusest kontrollimiseks. Puu t\u00e4idetakse <strong>1000000<\/strong> elementidega. Ja toimub j\u00e4rjestikune kustutamine, sisestamine ja elementide saamine <strong>1000000<\/strong> kord. See t\u00e4hendab <strong>3000000<\/strong> operatsioonide arvu. Tulemuseks osutus \u00fcsna hea ~ 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.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\/et\/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=\"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":"Mul on j\u00e4rgmine \u00fclesanne.","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}]}}