kódujeme zprávu "aa bb"

0. začneme stromem s jedním speciálním vrcholem ?(0)

1. kódujeme první znak zprávy a, vypíšeme kód spec.uzlu ? (<font color="green">prázdný řetězec</font>) následovaný definicí znaku a, vložíme do stromu a aktualizujeme frekvence ve stromu

  • Input: ***<u>a</u>*a bb

  • Output: <u>a</u>

  • OutBin: <u>000</u>

    ** (1) ** 0/ \1****

?(0) <u>a(1)</u>** 2. kódujeme další a*, pouze vypíšeme jeho kód a aktualizujeme frekvence ve stromu ***

  • Input: a*<u>a</u>** bb*

  • Output: a**<u>1</u>**

  • OutBin: 000**<u>1</u>**

    (<u>2</u>) 0/ \1

?(0) a(<u>2</u>) 3. kódujeme "mezeru", vypíšeme kód spec.uzlu ? (<font color="green">0</font>)** **a definici znaku "mezera", vložíme do stromu a aktualizujeme frekvence ve stromu (žádné výměny nejsou potřeba)

  • Input: aa<u>_</u>bb

  • Output: a1**<u><font color="green">0</font>_</u>**

  • OutBin: 0001**<u><font color="green">0</font>001</u>**

    (<u>3</u>) 0/ \1

    (<u>1</u>) a(2) 0/ \1

?(0) <u>_(1)</u> 4. kódujeme b, vypíšeme kód ? (<font color=green>00</font>) a definici b, vložíme do stromu a aktualizujeme frekvence ve stromu (žádné výměny nejsou potřeba)

  • Input: aa* <u>b</u>*b

  • Output: a10 <u><font color="green">00</font>b</u>

  • OutBin: 00010001**<u><font color="green">00</font>010</u>**

     **(<u>4</u>)**
    0/ \1
    

    (<u>2</u>) a(2) 0/ \1

    (<u>1</u>) _(1) 0/ \1

?(0) <u>b(1)</u> 5. kódujeme další b, vypíšeme kód b a aktualizujeme frekvence ve stromu -> porušíme sourozeneckou vlastnost, musíme prohodit uzly na úrovni před kořenem a dokončíme aktualizaci frekvencí

  • Input: aa* b<u>b</u>***

  • Output: a10 00b**<u>001</u>**

  • OutBin: 0001000100010**<u>001</u>**

(4)
0/ \1
(2) a(2)
0/ \1
(1) _(<font color="red">1</font>)
0/ \1
?(0)b(<font color="red"><u>2</u></font>)
(4)
0/ \1
(<font color="red"><u>3</u></font>) a(<font color="red">2</font>)
0/ \1
(1)b(<u>2</u>)
0/ \1
?(0)_(1)
(<u>5</u>)
0/ \1
a(2)**(<u>3</u>)
    0/ \1
  (1) **|b(|<u>2</u>|)|**
 0/ \1

?(0) **|_(1)|****|