Быстро создать бинарное дерево в C #

голоса
1

Всякий раз, когда мы пытаемся сделать небольшую проблему, связанную с бинарными деревьями он принимает возрастов, чтобы написать основной код для заполнения достаточно большого двоичного дерева. Я хочу иметь небольшой код, чтобы быстро построить бинарное дерево поиска инициализирован со случайными значениями.

Задан 14/07/2011 в 00:10
источник пользователем
На других языках...                            


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 Шри аравинда

Ответил 14/07/2011 в 00:12
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more