Professional Documents
Culture Documents
GenerickiTip Text
GenerickiTip Text
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenerickiTip
{
class Program
{
class Cvor<V, K>
{
K kljuc;
V vrednost;
Cvor<V, K> l;
Cvor<V, K> d;
if(tren.Kljuc.CompareTo(kljuc) != 0)
{
if
(tren.Kljuc.CompareTo(kljuc) > 0) tren.Levi = new
Cvor<V, K>(vrednost, kljuc);
else
tren.Desni = new
Cvor<V, K>(vrednost, kljuc);
}
}
public V Pretraga(K kljuc)
{
Cvor<V, K> tren = koren;
while (tren != null &&
tren.Kljuc.CompareTo(kljuc) != 0)
{
if
(tren.Kljuc.CompareTo(kljuc) > 0)
tren = tren.Levi;
else
tren = tren.Desni;
}
return tren == null ?
default(V) : tren.Vrednost;
}
#region obilasci
static void Preorder(List<V> lista,
Cvor<V, K> tren)
{
if (tren == null) return;
lista.Add(tren.Vrednost);
if (tren.Levi != null)
Preorder(lista, tren.Levi);
if (tren.Desni != null)
Preorder(lista, tren.Desni);
}
static void Inorder(List<V> lista,
Cvor<V, K> tren)
{
if (tren == null) return;
if (tren.Levi != null)
Inorder(lista, tren.Levi);
lista.Add(tren.Vrednost);
if (tren.Desni != null)
Inorder(lista, tren.Desni);
}
static void Postorder(List<V> lista,
Cvor<V, K> tren)
{
if (tren == null) return;
if (tren.Levi != null)
Postorder(lista, tren.Levi);
if (tren.Desni != null)
Postorder(lista, tren.Desni);
lista.Add(tren.Vrednost);
}
#endregion
public List<V> UListu(NacinObilaska
o)
{
List<V> lista = new List<V>();
switch(o)
{
case
NacinObilaska.Preorder:
{
Preorder(lista,
koren);
break;
}
case
NacinObilaska.Inorder:
{
Inorder(lista,
koren);
break;
}
case
NacinObilaska.Postorder:
{
Postorder(lista,
koren);
break;
}
}
return lista;
}
public List<V> SortirajListu(List<V>
lista)
{
lista.Sort();
return lista;
}
public void Obrisi(Cvor<V, K> c)
{
}
}
class Kalendar
{
BinStabloPret<IVremenskaObaveza, int>
stablo;
public Kalendar()
{
}
public void Dodaj(IVremenskaObaveza
v)
{
if(stablo == null) stablo = new
BinStabloPret<IVremenskaObaveza, int>(v,
v.Naziv.GetHashCode());
else
stablo.Dodaj(v,
v.Naziv.GetHashCode());
}
public void Obrisi(IVremenskaObaveza
v)
{
}
public List<IVremenskaObaveza>
Lista()
{
return
stablo.SortirajListu(stablo.UListu(NacinObilaska.Posto
rder));
}
public override string ToString()
{
List<IVremenskaObaveza> lista =
stablo.SortirajListu(stablo.UListu(NacinObilaska.Preor
der));
string s = "";
for (int i = 0; i <
lista.Count; i++)
{
s += $"{lista[i].Naziv}
{lista[i].Vreme} \n";
}
return s;
}
}