using System;
using System.Collections.Generic;
namespace ConsoleApp15
{
public class Wezel<T>
{
public Wezel<T> Rodzic;
public Wezel<T> lewy;
public Wezel<T> prawy;
public int numer;
public T wartosc;
private object rodzic;
public Wezel(int numer, T wartosc)
{
this.numer = numer;
this.wartosc = wartosc;
}
public void DodajDziecko(Wezel<T>nowy)
{
if (nowy.numer % 2 == 0) this.lewy = nowy;
else this.prawy = nowy;
}
}
public class Drzewo<T>
{
Wezel<T> root;
int length;
public static List<int> DrogaDoRodzica(int numer)
{
if (numer < 2) throw new Exception("Numer musi być większy równy niż 2");
List<int> wynik = new List<int>();
numer = numer / 2;
while(numer > 1)
{
wynik.Add(numer % 2);
numer = numer / 2;
}
wynik.Reverse();
return wynik;
}
public Wezel<T> znajdzRodzica(int numer)
{
var droga = Drzewo<T>.DrogaDoRodzica(numer);
Wezel<T> rodzic = this.root;
for(int i = 0; i < droga.Count; i++)
{
if (droga[i] == 0) rodzic = rodzic.lewy;
else rodzic = rodzic.prawy;
}
return rodzic;
}
public void Push(T wartosc)
{
Wezel<T> nowy = new Wezel<T>(length+1, wartosc);
length++;
if ((length - 1) == 0)
{
this.root = nowy;
return;
}
var rodzic = this.znajdzRodzica(nowy.numer);
rodzic.DodajDziecko(nowy);
}
}
class Program
{
static void Main(string[] args)
{
Drzewo<int> d = new Drzewo<int>();
d.Push(5);
d.Push(5);
d.Push(5);
d.Push(5);
d.Push(5);
}
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}