Witam, bardzo proszę kolegów o pomoc. Piszę program rozkładający macierze według pewnego algorytmu. Macierz jest rozkładana w kolejnych krokach aż do najprostszej postaci. W każdym korku z jednek macierzy tworzone są dwie mniejsze. Chciałbym zastosować tutaj strukturę drzewa binarnego. Jednak jest jeden problem - jak stworzyć drzewo nie wiedząc początkowo ile będzie miało węzłów ? Ilość węzłów zależy od wielkości macierzy. Chciałbym to sprawdzać w jakiejś pętli i ogólnie w tej pętli rozkładać tą macierz aż do najprostszej postaci tworząc kolejne węzły drzewa.
Skorzystałem z implementacji węzła
public class Node
{
private object data;
private Node left, right;
#region Konstruktory
public Node() : this(null) {}
public Node(object data) : this(data, null, null) {}
public Node(object data, Node left, Node right)
{
this.data = data;
this.left = left;
this.right = right;
}
#endregion
#region Wlasciwosci publiczne
public object Value
{
get
{
return data;
}
set
{
data = value;
}
}
public Node Left
{
get
{
return left;
}
set
{
left = value;
}
}
public Node Right
{
get
{
return right;
}
set
{
right = value;
}
}
#endregion
}
oraz stworzyłem klasę drzewa binarnego
public class BinaryTree
{
private Node root;
public BinaryTree()
{
root = null;
}
#region Metody publiczne
public virtual void Clear()
{
root = null;
}
#endregion
#region Wlasciwosci publiczne
public Node Root
{
get
{
return root;
}
set
{
root = value;
}
}
#endregion
}
i wiem teraz, że mogę zacząć tworzyć drzewo binarne np tak :
btree = new BinaryTree();
btree.Root = new Node(1);
btree.Root.Left = new Node(2);
btree.Root.Right = new Node(3);
ale chciałbym to btree.Root. Left.... itd wrzucić do jakiejś pętli która będzie dodawała kolejne węzły np btree.Root.Left.Left dla 4 węzła lewego. Czy ktoś z was orientuje się jak to zrealizować bo ja jakoś nie mam pomysłu. Drzewa mi działają i je zaimplementowałem ale tylko ze znaną liczbą węzłów. Bardzo was proszę o pomoc.
msm - edytowałem posta, <code class="csharp"> zamiast <code class="c#">
msm - ups, jeszcze raz - </code> zamiast <\code>