binarny strom

Sekcia: Programovanie 24.02.2009 | 13:07
stewe   Návštevník
zdravim

mam taky problemik, mam binarny strom v c++.
udaje tam vkladam tak, ze v lavom podstrome
mam vzdy mensie hodnoty ako v rodicovy a v
pravom podstrome vacsie.

5
/ \
3 6
/\ /\
1 4 2 8

chapeme sa.

teraz ide o to, ze to mozem cez inorder
vypisat podla velkosti.

v uzle ale uchovavam aj hodnotu, kolko tych
cisel je (napr. sestku som nacital 5 krat,
stvork tri razy atd).

teraz chcem vypisat ten strom od najvacieho
po najmensi pocet tych cisiel.

ale ako na to???

nemozem to zoradovat tak ako to nacitavam, pretoze
este neviem,ake cisla budem mat. (a uz vobec nie kolko)

napadlo ma, ze si zistim pocet uzlov, alokujem take pole,
dvoj rozmerne, kde prva zlozka bude cislo a druha ich pocet.

a toto zoradim podla toho poctu.

ale to je asi nosenie dreva do lesa. potom ten strom akosi straca zmysel.

dik
    • Re: binarny strom 24.02.2009 | 13:32
      stewe   Návštevník
      este ma napadlo, ze by som mohol prebehnut ten strom inorder, a vzdy precital pocet tych veci v uzle. a nasledne by som paralelne robil druhy strom s tym, ze by som vkladal (usporaduval) podla poctu veci v uzloch.

      to je ok az na to, ze co sa stane, ked niektorych cisiel bude take iste mnozstvo ^^
      • Re: binarny strom 24.02.2009 | 17:23
        Scarry   Návštevník
        a nemozes ich hned vypisovat pri prehladavani? ten druhy strom je myslim zbytocny. Prehladaj strom, najdi najvecsieho, vypis, prehladaj znova, ak nenajde tak to cislo zniz o jednu a opakuj
        • Re: binarny strom 24.02.2009 | 18:01
          stewe   Návštevník
          a co ked bude nejakych cisiel taky isty pocet?
          • Re: binarny strom 25.02.2009 | 07:28
            Scarry   Návštevník
            preto budes hladat dalej az do konca aj ked najdes pozadovanu hodnotu
    • Re: binarny strom 24.02.2009 | 17:07
      Scarry   Návštevník
      neni ten strom chybny? ta 2ka mi tam nepasuje...
      • Re: binarny strom 24.02.2009 | 18:02
        stewe   Návštevník
        myslim ze to je ok, len to je posunute. v lavom dietati je vzdy mensie, v pravom vzdy vacsie ako je rodic.
        • Re: binarny strom 25.02.2009 | 07:31
          Scarry   Návštevník
          no neviem ci je to posunute, ale ak mas tu 2ku pod 6kou, tak je to chybne
    • Re: binarny strom 25.02.2009 | 22:24
      stewe   Návštevník
      • Re: binarny strom 25.02.2009 | 22:30
        Avatar Tommy Angelo   Používateľ
        stewe opakujes PT-cko? : ]
        • Re: binarny strom 25.02.2009 | 23:10
          stewe   Návštevník
          nie, pripravujem sa na klasicke sifry ;)
    • Re: binarny strom 26.02.2009 | 10:59
      ffff   Návštevník
      a nejsi nahodou z FiiT ?
    • Re: binarny strom 26.02.2009 | 19:32
      Avatar Michal Nánási Ubuntu 11.04  Používateľ
      Nic lepsie ako zobrat veci v strome, dat do pola a utriedit v principe spravit nevies... Ak chces vypisat hodnoty podla frekvecie, tak ti ten strom je nanic. Pripadne si pri vytvarani mozes spravit dva stromy, jeden obsahuje prvky utriedene podla jedneho parametra, druhy podla druheho. Stromy by mohli obsahovat iba odkazy na data, aby si data nemal na viacerych miestach.
      Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread!
    • Re: binarny strom 27.02.2009 | 22:40
      Avatar nardew debian  Používateľ
      pri tejto ulohe by som vytvoril dalsi index a tam to mal usporaduvane podla frekvencii
      • Re: binarny strom 27.02.2009 | 23:56
        Avatar Jaroslav Štulajter Mandriva 2009.1  Používateľ
        Pocuj v jednej knihe "rozumime c++" je kapitola generovanie tabulky krizovych dotazov a tam najdes sposob ako to spravit cez datove struktury map z STL a zistis ze tvoj problem je trivialny a tvoj datovy strom na nic :)
        PS: dufam ze klasicke sifry uz sa nepokusa prednasat introvertny zajo :D
        • Re: binarny strom 28.02.2009 | 00:20
          Avatar nardew debian  Používateľ
          1.) vidim, ze za ten dlhy cas co som tu nebol sa pojem vlakno o nic viac nerozsiril
          2.) on ten strom moze pouzivat aj na nieco ine
          • Re: binarny strom 28.02.2009 | 16:13
            stewe   Návštevník
            vyriesil som to cez pole. ide o to, ze lamem cezarovu sifru, a ta je zalozena na frekvencnej analyze. potrebujem zistit relativny vyskyt kazdeho pismena (a - z) v texte. potom zoberem relativnu pocetnost znakov v slovencine (statisticky overene) a 26 krat (cezar je transpozicny, je len 26 moznosti ako to posunut) testujem zhodu frekvencie slovenciny a akutalneho posunu. v pripade cisla najmensieho k nule je to pozadovany posun. (a teda kluc) a uz som majster sveta, pretoze ked viem kluc viem vsetko :)
            .
            ten strom je zaujimavy pri digramoch a tri gramoch. resp. pri zoradovani podla abecedy, avsak pre mna to je fuk, ci to mam podla abecedy zoradene. strom je lepsi na slovnikove utoky, kedy sa rychlejsie overi, ci nejake slovo sedi. (ak to ratam po pismenach). najblbsi cas pri strome je tusim n.log n
            .
            no, uvidim :)

            nie, prednasa grosek :)
            • Re: binarny strom 28.02.2009 | 17:10
              Avatar Jaroslav Štulajter Mandriva 2009.1  Používateľ
              predseda karnej komisie :) si zabudol dopisat :)