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)|****|