Wanneer we proberen om een klein probleem met betrekking tot binaire bomen doen het eeuwen duurt om de basis code om een groot genoeg is binaire boom bevolken schrijven. Ik wil een kleine code om een binaire zoekboom geïnitialiseerd met willekeurige waarden snel te construeren.
Maak snel een binaire boom in C #
stemmen
1
De vraag is gesteld op 14/07/2011 om 00:10 2011-07-14 00:10
bron van user Sriwantha Attanayake
In andere talen...
bron van user Sriwantha Attanayake
In andere talen...
1 antwoorden
stemmen 1
1
static void Main(string[] args)
{
int numberOfNodes = 10;
Random rand = new Random();
int[] randomValues = Enumerable.Repeat(0, numberOfNodes).Select(i => rand.Next(0, 100)).ToArray();
//sort the array
int[] binaryTreeValues = (from x in randomValues orderby x select x).ToArray();
BNode root = null;
Construct(ref root, ref binaryTreeValues, 0, binaryTreeValues.Length - 1);
}
public static void Construct(ref BNode root, ref int[] array, int start, int end)
{
if (start > end)
{
root = null;
}
else if (start == end)
{
root = new BNode(array[start]);
}
else
{
int split = (start + end) / 2;
root = new BNode(array[split]);
Construct(ref root.Left, ref array, start, split - 1);
Construct(ref root.Right, ref array, split + 1, end);
}
}
public class BNode
{
public int ID;
public int Level;
public BNode Left;
public BNode Right;
public BNode(int ID)
{
this.ID = ID;
}
public override string ToString()
{
return this.ID.ToString();
}
}
Met vriendelijke groet, Sriwantha Sri Aravinda