using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class Wierzcholek
{
public int wartosc;
public Wierzcholek lewy, prawy;
public Wierzcholek(int a)
{
wartosc =a;
lewy=null;
prawy=null;
}
}
public class BST
{
public Wierzcholek root;
public Wierzcholek get_adres(int a,Wierzcholek w)
{
if (a > w.wartosc && w.prawy == null) return w.prawy;
if (a < w.wartosc && w.lewy == null) return w.lewy;
if (a > w.wartosc && w.prawy != null) return get_adres(a, w.prawy);
if (a < w.wartosc && w.lewy != null) return get_adres(a, w.lewy);
return new Wierzcholek(0); // do tego i tak nie dojdzie, bo powyższe warunki są wystarczające, ale kompilator się czepia...
}
public void dodaj(int a)
{
if (root == null) { root = new Wierzcholek(a); } else
{
Wierzcholek w = this.get_adres(a, root);
w = new Wierzcholek(a);
}
//System.Console.WriteLine(w.wartosc);
}
public void wypisz(Wierzcholek w)
{
System.Console.WriteLine(w.wartosc);
if (w.lewy != null)wypisz(w.lewy);
if (w.prawy != null)wypisz(w.prawy);
}
}
class Program
{
static void Main(string[] args)
{
BST bb = new BST();
bb.dodaj(5);
bb.dodaj(2);
bb.dodaj(3);
bb.dodaj(8);
bb.wypisz(bb.root);
System.Console.Read();
}
}
}
Drzewo Binarne BST.
Odpaliłem debuggera i wartości prawy i lewy w obiekcie root nie zmieniają się, wskazują na null, dlaczego tak się dzieje?