<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Bin%C3%A1rny_strom</id>
	<title>Binárny strom - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Bin%C3%A1rny_strom"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;action=history"/>
	<updated>2026-05-03T16:45:59Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;diff=6656&amp;oldid=prev</id>
		<title>Juraj na 20:19, 16. august 2010</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;diff=6656&amp;oldid=prev"/>
		<updated>2010-08-16T20:19:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 20:19, 16. august 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Riadok 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategória:Študijné materiály]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategória:Programovanie]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategória:Informatika]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Draft}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Draft}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Skripta programovanie}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Skripta programovanie}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;diff=3155&amp;oldid=prev</id>
		<title>Juraj na 14:00, 5. apríl 2010</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;diff=3155&amp;oldid=prev"/>
		<updated>2010-04-05T14:00:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 14:00, 5. apríl 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot; &gt;Riadok 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Strom''' je dynamická dátová štruktúra. Stromy sa používajú v prípade hierarchických vzťahov a rekurzívnych štruktúr objektov.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Strom''' je dynamická dátová štruktúra. Stromy sa používajú v prípade hierarchických vzťahov a rekurzívnych štruktúr objektov.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__TOC__&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__TOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Cvicenie|Binárny strom (riešené príklady)}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Definícia==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Definícia==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Binárny strom je v informatike  stromová dátová štruktúra, ktorej každý vrchol má najviac dvoch potomkov. Zvyčajne sa označujú ako ľavý a pravý. Jedno z bežných použití binárneho stromu je binárny vyhľadávací strom; iné je binárna halda.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Binárny strom je v informatike  stromová dátová štruktúra, ktorej každý vrchol má najviac dvoch potomkov. Zvyčajne sa označujú ako ľavý a pravý. Jedno z bežných použití binárneho stromu je binárny vyhľadávací strom; iné je binárna halda.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;diff=2977&amp;oldid=prev</id>
		<title>Juraj: Vytvorená stránka „Kategória:Študijné materiály Kategória:Programovanie Kategória:Informatika {{Draft}} {{Skripta programovanie}} '''Strom''' je dynamická dátová štrukt…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Bin%C3%A1rny_strom&amp;diff=2977&amp;oldid=prev"/>
		<updated>2010-03-28T17:08:32Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „&lt;a href=&quot;/index.php/Kateg%C3%B3ria:%C5%A0tudijn%C3%A9_materi%C3%A1ly&quot; title=&quot;Kategória:Študijné materiály&quot;&gt;Kategória:Študijné materiály&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Programovanie&quot; title=&quot;Kategória:Programovanie&quot;&gt;Kategória:Programovanie&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Informatika&quot; title=&quot;Kategória:Informatika&quot;&gt;Kategória:Informatika&lt;/a&gt; {{Draft}} {{Skripta programovanie}} &amp;#039;&amp;#039;&amp;#039;Strom&amp;#039;&amp;#039;&amp;#039; je dynamická dátová štrukt…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategória:Študijné materiály]]&lt;br /&gt;
[[Kategória:Programovanie]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
{{Draft}}&lt;br /&gt;
{{Skripta programovanie}}&lt;br /&gt;
'''Strom''' je dynamická dátová štruktúra. Stromy sa používajú v prípade hierarchických vzťahov a rekurzívnych štruktúr objektov.&lt;br /&gt;
__TOC__&lt;br /&gt;
==Definícia==&lt;br /&gt;
Binárny strom je v informatike  stromová dátová štruktúra, ktorej každý vrchol má najviac dvoch potomkov. Zvyčajne sa označujú ako ľavý a pravý. Jedno z bežných použití binárneho stromu je binárny vyhľadávací strom; iné je binárna halda.&lt;br /&gt;
&lt;br /&gt;
Strom má hierarchickú štruktúru: Rodič - potomok&lt;br /&gt;
&lt;br /&gt;
Binárny strom je usporiadaný strom v ktorom má každý vrchol najviac dvoch synov.&lt;br /&gt;
&lt;br /&gt;
Z  programátorského hľadiska je výhodné údajovú štruktúru strom definovať pomocou rekurzie:&lt;br /&gt;
&lt;br /&gt;
'''Strom typu T je buď''' &amp;lt;ref&amp;gt;http://cec.truni.sk/stoffov/dynamicke-udajove-struktury/Cast2/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* prázdna množina alebo&lt;br /&gt;
* vrchol typu T spolu s konečným počtom pripojených disjunktných stromov typu T, ktoré nazývame podstromy&lt;br /&gt;
&lt;br /&gt;
Každý strom je tvorený ďalšími stromami, pre ktoré platí rovnaká definícia. Zviditeľníme ju na príklade binárneho stromu:&lt;br /&gt;
&lt;br /&gt;
[[Súbor:binStrom.gif|center|framed|Príklad binárneho stromu]]&lt;br /&gt;
&lt;br /&gt;
Na vedľajšom obrázku je vidieť, že aj podstrom sa skladá z koreňa a dvoch ďalších podstromov (niektorý z nich môže byť aj prázdny!). Každý list (t.j. vrchol bez synov) je tiež stromom, jeho ľavý aj pravý podstrom sú však prázdne.&lt;br /&gt;
===Binárny vyhľadávací strom===&lt;br /&gt;
Hodnoty v uzloch sú usporiadané tak, že pre každý uzol stromu ''u''  platí&amp;lt;ref&amp;gt;http://sk.wikipedia.org/wiki/Bin%C3%A1rny_vyh%C4%BEad%C3%A1vac%C3%AD_strom&amp;lt;/ref&amp;gt;:&lt;br /&gt;
* hodnota uložená v ''u'' je väčšia alebo rovná ako hodnota uložená v ľavom podstrome u&lt;br /&gt;
* hodnota uložená v ''u'' je menšia alebo rovná ako hodnota uložená v pravom podstrome u&lt;br /&gt;
&lt;br /&gt;
Potom je možné v tomto strome jednoduchým spôsobom vyhľadať danú hodnotu h:&lt;br /&gt;
&lt;br /&gt;
# nastav koreň ako aktuálny uzol (u)&lt;br /&gt;
# pokiaľ je v u uložená hodnota h, algoritmus končí (a vráti u)&lt;br /&gt;
# ak je u list, algoritmus končí (hodnota h nebola v strome nájdená)&lt;br /&gt;
# hodnota h sa porovná s hodnotou v u (nech je táto hodnota h')&lt;br /&gt;
## ak je &amp;lt;math&amp;gt;h \le h'&amp;lt;/math&amp;gt;, do u sa uloží ľavý potomok u&lt;br /&gt;
## inak sa do u uloží pravý potomok u&lt;br /&gt;
# pokračuj bodom 2&lt;br /&gt;
&lt;br /&gt;
==Reprezentácia binárneho stromu==&lt;br /&gt;
Štruktúra ''Tuzol'' binárneho stromu sa skladá z:&lt;br /&gt;
*hodnoty (hodnôt) uzla&lt;br /&gt;
*2 ukazovateľov na ďalšie uzly (vetvy)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
struct TUzol&lt;br /&gt;
{   int data;&lt;br /&gt;
    TUzol *lavy,*pravy;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
V našom prípade je hodnota uzla premenná data, typu celé číslo. Premenná data môže byť ľubovoľného typu, napr. char, double, ale aj vlastne definovaných typov - štruktúra.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:binStrom2.png|center|framed|Usporiadanie prvkov TUzol v binárnom strome]]&lt;br /&gt;
&lt;br /&gt;
Na sprístupnenie stromu potrebujeme ukazovateľ na koreň, v programe teda stačí deklarovať:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
TUzol *strom;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Ak niektorý vrchol nemá syna, hodnoty príslušných ukazovateľov sú NULL&lt;br /&gt;
==Operácie s binárnym stromom==&lt;br /&gt;
V nasledujúcich prípadoch budeme pracovať s binárnym vyhľadávacím stromom.&lt;br /&gt;
&lt;br /&gt;
===Vloženie hodnoty do stromu===&lt;br /&gt;
'''Úloha:''' vložiť do stromu nový uzol. Nový uzol treba vložiť na správne miesto tak, aby bol strom usporiadaný.&lt;br /&gt;
&lt;br /&gt;
'''Analýza:'''&lt;br /&gt;
*Strom je prázdny. Novo vložený uzol bude koreňom stromu.&lt;br /&gt;
*Strom nie je prázdny. V strome je už nejaký uzol. V tomto prípade treba zistiť, na ktorú stromu stromu sa má uzol vložiť.&lt;br /&gt;
**Rozdhodnutie robíme podľa hodnoty dátovej časti nového uzla:&lt;br /&gt;
***Ak je hodnota nového uzla menšia ako hodnota existujúceho uzla, tak ho dáme vľavo, &lt;br /&gt;
***inak ho vložíme vpravo. &lt;br /&gt;
**Ak je vpravo, alebo vľavo už nejaký uzol, postupujeme rekurzívne&lt;br /&gt;
&lt;br /&gt;
'''Algoritmus vloženia:'''&lt;br /&gt;
&lt;br /&gt;
Definujme procedúru ''Vloz'', ktorá bude mať 2 parametre: Začiatočný uzol stromu, do ktorého budeme vkladať hodnotu. Keďže strom je rekurzívna štruktúra, algoritmus vloženia bude rekurzívny.&lt;br /&gt;
&lt;br /&gt;
Procedúra ''Vloz''( Uzol U, hodnota H)&lt;br /&gt;
#Ak aktuálny uzol U neobsahuje žiadnu hodnotu&lt;br /&gt;
##do dátovej časti uzla U nastav hodnotu H&lt;br /&gt;
##Nastav hodnoty smerníkov ''lavy'' a ''pravy'' uzla U na hodnotu NULL&lt;br /&gt;
##Koniec&lt;br /&gt;
#Ak je hodnota H &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; ako hodnota v uzle U&lt;br /&gt;
##Ak nemá uzol U ľavého potomka&lt;br /&gt;
###Vytvor nový uzol &amp;lt;math&amp;gt;U_n&amp;lt;/math&amp;gt; a nastav mu v dátovej časti prázdnu hodnotu&lt;br /&gt;
##Zavolaj procedúru ''Vloz'' s parametrami: Uzol U - ľavý (novo vytvorený) potomok uzla U (&amp;lt;math&amp;gt;U_n&amp;lt;/math&amp;gt;), hodnota - H&lt;br /&gt;
#Ak je hodnota H &amp;gt; ako hodnota v uzle U &lt;br /&gt;
##Ak nemá uzol U pravého potomka&lt;br /&gt;
###Vytvor nový uzol &amp;lt;math&amp;gt;U_n&amp;lt;/math&amp;gt; a nastav mu v dátovej časti prázdnu hodnotu&lt;br /&gt;
##Zavolaj procedúru ''Vloz'' s parametrami: Uzol U - pravý (novo vytvorený) potomok uzla U (&amp;lt;math&amp;gt;U_n&amp;lt;/math&amp;gt;), hodnota - H&lt;br /&gt;
&lt;br /&gt;
'''Znázornenie algoritmu vloženia'''&lt;br /&gt;
&amp;lt;gallery widths=300px heights=200px perrow=2&amp;gt;&lt;br /&gt;
Image:binStrom_vlozenie1.png| Počiatočný stav. Strom reprezentuje jeden vrchol, ktorý nemá hodnotu (v našom prípade ju znázorňuje hodnota 0)&lt;br /&gt;
Image:binStrom_vlozenie2.png| Do stromu vkladáme hodnotu 5. V opísanom algoritme je táto situácia zachytená v kroku 1. Následne sa vykonajú kroky 1.1, 1.2 a 1.3&lt;br /&gt;
Image:binStrom_vlozenie3.png| Do stromu vkladáme hodnotu 3. V algoritme platí krok 2. Krok 2.1 : uzol U nemá ľavého potomka tak takéhoto potomka vytvoríme (krok 2.1.1). Zavoláme procedúru Vloz s parametrami: uzol U - lavý potomok uzla U (teda novo vytvorený uzol). Po rekurzívnom zavolaní procedúry Vloz (krok 2.2) bude platiť podmienka v kroku 1.&lt;br /&gt;
Image:binStrom_vlozenie4.png| Do stromu vkladáme hodnotu 4. V algoritme platí krok 3. Krok 3.1 : uzol U nemá pravého potomka tak takéhoto potomka vytvoríme (krok 3.1.1). Zavoláme procedúru Vloz s parametrami: uzol U - pravý potomok uzla U (teda novo vytvorený uzol). Po rekurzívnom zavolaní procedúry Vloz (krok 3.2) bude platiť podmienka v kroku 2. Ďalší postup je rovnaký ako pri vkladaní hodnoty 3.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prehľadávanie stromu===&lt;br /&gt;
Za základnú operáciu sa však považuje prehľadávanie stromu (pohyb po strome). Vzhľadom na to, že strom je výhodne definovaný ako rekurzívna údajová štruktúra, aj na prehľadávanie sa využívajú rekurzívne metódy.&lt;br /&gt;
&lt;br /&gt;
Keďže strom je rekurzívna štruktúra prehľadávanie stromu bude tiež rekurzívne. Podľa toho ako budeme postupovať pri prehľadávaní stromu, rozlišujeme metódy prehľadávania na:&lt;br /&gt;
*preorder&lt;br /&gt;
*inorder&lt;br /&gt;
*postorder&lt;br /&gt;
&lt;br /&gt;
Majme nasledujúci binárny strom:&lt;br /&gt;
&lt;br /&gt;
[[Súbor:binStrom3.png|center|framed|Usporiadaný binárny strom]]&lt;br /&gt;
&lt;br /&gt;
====Prehľadávanie preorder:====&lt;br /&gt;
Postup prehľadávanie (výpisu hodnôt) binárneho stromu:&lt;br /&gt;
*Vypíš hodnotu uzla&lt;br /&gt;
*prehľadaj ľavý podstrom&lt;br /&gt;
*prehľadaj pravý podstrom&lt;br /&gt;
&lt;br /&gt;
Pri tomto postupe bude výpis binárneho stromu na predchádzajúcom obrázku nasledovný:&lt;br /&gt;
 10 5 1 0 4 7 6 9 12&lt;br /&gt;
&lt;br /&gt;
====Prehľadávanie inorder:====&lt;br /&gt;
Postup prehľadávanie (výpisu hodnôt) binárneho stromu:&lt;br /&gt;
*prehľadaj ľavý podstrom&lt;br /&gt;
*Vypíš hodnotu uzla&lt;br /&gt;
*prehľadaj pravý podstrom&lt;br /&gt;
&lt;br /&gt;
Pomocou tohoto spôsobu prehľadávania stromu dostaneme pri výpise postupnosť usporiadaných hodnôt uzlov stromu od najmenšej po najväčšiu hodnotu.&lt;br /&gt;
Pri tomto postupe bude výpis binárneho stromu na predchádzajúcom obrázku nasledovný:&lt;br /&gt;
 0 1 4 5 6 7 9 10 12&lt;br /&gt;
&lt;br /&gt;
====Prehľadávanie postorder:====&lt;br /&gt;
Postup prehľadávanie (výpisu hodnôt) binárneho stromu:&lt;br /&gt;
*prehľadaj ľavý podstrom&lt;br /&gt;
*prehľadaj pravý podstrom&lt;br /&gt;
*Vypíš hodnotu uzla&lt;br /&gt;
&lt;br /&gt;
Pri tomto postupe bude výpis binárneho stromu na predchádzajúcom obrázku nasledovný:&lt;br /&gt;
 0 4 1 6 9 7 5 12 10&lt;br /&gt;
&lt;br /&gt;
===Zmazanie stromu===&lt;br /&gt;
Princíp zmazania je podobný ako prechádzanie stromom:&lt;br /&gt;
*Ak nemá uzol žiadneho potomka, zmažeme uzol&lt;br /&gt;
*Ak má potomka &lt;br /&gt;
**zmažeme ľavú časť stromu&lt;br /&gt;
**Zmažeme pravú časť stromu&lt;br /&gt;
&lt;br /&gt;
==Implementácia v jazyku C==&lt;br /&gt;
===Vloženie hodnoty do stromu===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void PridajUzol(TUzol *uzol, int udaj)&lt;br /&gt;
{&lt;br /&gt;
  if (!uzol-&amp;gt; data)  // ak v danom uzle nie su ziadne data- pridame novy udaj&lt;br /&gt;
  {   uzol-&amp;gt;data = udaj;	// do uzla skopirujeme data&lt;br /&gt;
	uzol-&amp;gt;lavy = uzol-&amp;gt;pravy = NULL;  // nastavime pointre na lavy a pravy uzol&lt;br /&gt;
      return;&lt;br /&gt;
  }&lt;br /&gt;
  if(uzol-&amp;gt;data &amp;gt;= udaj) // pridavame vlavo&lt;br /&gt;
  {  if (!uzol-&amp;gt;lavy) // ak uzol vlavo neexisuje&lt;br /&gt;
     {  uzol-&amp;gt;lavy = new TUzol; // tak ho vytvorime&lt;br /&gt;
	uzol-&amp;gt;lavy-&amp;gt;data=0;&lt;br /&gt;
     }&lt;br /&gt;
     PridajUzol(uzol-&amp;gt;lavy, udaj); // opakujeme rekurzivne funkciu  s lavym uzlom&lt;br /&gt;
  }					&lt;br /&gt;
  else   // pridavame vpravo&lt;br /&gt;
  {  if (!uzol-&amp;gt;pravy) &lt;br /&gt;
     {   uzol-&amp;gt; pravy = new TUzol;&lt;br /&gt;
         uzol-&amp;gt;pravy-&amp;gt;data=0;&lt;br /&gt;
     }&lt;br /&gt;
     PridajUzol(uzol-&amp;gt; pravy, udaj);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Výpis stromu inorder===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void vypis(TUzol *s)&lt;br /&gt;
{    &lt;br /&gt;
   if(!s) &lt;br /&gt;
      return;&lt;br /&gt;
   else    &lt;br /&gt;
   {  &lt;br /&gt;
      vypis(s-&amp;gt;lavy);&lt;br /&gt;
      cout&amp;lt;&amp;lt;s-&amp;gt;data&amp;lt;&amp;lt;endl;&lt;br /&gt;
      vypis(s-&amp;gt;pravy);&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Vyhľadávanie v strome (inorder)===&lt;br /&gt;
Funkcia ''hladaj'' bude v strome vyhľadávať uzol s hodnotou ''x''. V prípade úspechu vráti smerník na tento prvok. V opačnom prípade vráti hodnotu NULL.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
TUzol* hladaj(TUzol *s, int x)&lt;br /&gt;
{    &lt;br /&gt;
   if(s==NULL) &lt;br /&gt;
      return NULL;&lt;br /&gt;
   else    &lt;br /&gt;
   {  &lt;br /&gt;
      if(x &amp;lt; s-&amp;gt;data)&lt;br /&gt;
         return hladaj(s-&amp;gt;lavy,x); &lt;br /&gt;
      if(s-&amp;gt;data==x) &lt;br /&gt;
         return s; &lt;br /&gt;
      if(x &amp;gt; s-&amp;gt;data)&lt;br /&gt;
        return hladaj(s-&amp;gt;pravy,x);&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Zmazanie stromu===&lt;br /&gt;
Princíp zmazania je podobný ako vypísania. &lt;br /&gt;
*Ak nemá uzol žiadneho potomka, zmažeme aktuálny uzol&lt;br /&gt;
*Ak má potomka &lt;br /&gt;
**zmažeme ľavú časť stromu&lt;br /&gt;
**zmažeme pravú časť stromu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void ZmazStrom(TUzol *uzol)&lt;br /&gt;
{&lt;br /&gt;
  if (!uzol) return;&lt;br /&gt;
  if (uzol-&amp;gt;lavy)  // ak existuje lavy uzol&lt;br /&gt;
  {    ZmazStrom(uzol-&amp;gt;lavy);&lt;br /&gt;
       delete uzol-&amp;gt;lavy;&lt;br /&gt;
  }&lt;br /&gt;
  if (uzol-&amp;gt;pravy) // ak existuje pravy uzol&lt;br /&gt;
  {    ZmazStrom(uzol-&amp;gt;pravy);&lt;br /&gt;
       delete uzol-&amp;gt;pravy;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Zdroje==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>