Всякий раз, когда мы пытаемся сделать небольшую проблему, связанную с бинарными деревьями он принимает возрастов, чтобы написать основной код для заполнения достаточно большого двоичного дерева. Я хочу иметь небольшой код, чтобы быстро построить бинарное дерево поиска инициализирован со случайными значениями.
Быстро создать бинарное дерево в C #
голоса
1
Задан 14/07/2011 в 00:10 2011-07-14 00:10
источник пользователем Sriwantha Attanayake
На других языках...
источник пользователем Sriwantha Attanayake
На других языках...
1 ответов
голоса 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();
}
}
С уважением, Sriwantha Шри аравинда