using System; using System.Collections.Generic; namespace ConsoleApp15 { public class Wezel { public Wezel Rodzic; public Wezel lewy; public Wezel 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(Wezelnowy) { if (nowy.numer % 2 == 0) this.lewy = nowy; else this.prawy = nowy; } } public class Drzewo { Wezel root; int length; public static List DrogaDoRodzica(int numer) { if (numer < 2) throw new Exception("Numer musi być większy równy niż 2"); List wynik = new List(); numer = numer / 2; while(numer > 1) { wynik.Add(numer % 2); numer = numer / 2; } wynik.Reverse(); return wynik; } public Wezel znajdzRodzica(int numer) { var droga = Drzewo.DrogaDoRodzica(numer); Wezel 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 nowy = new Wezel(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 d = new Drzewo(); d.Push(5); d.Push(5); d.Push(5); d.Push(5); d.Push(5); } } }