a crea rapid un arbore binar în C #

voturi
1

Ori de câte ori încercăm să facem o mică problemă legată de arbori binari este nevoie de vârstele să scrie codul de bază pentru a popula o suficient de mare arbore binar. Vreau să aibă un cod de mic pentru a construi rapid un arbore binar de căutare inițializate cu valori aleatoare.

Întrebat 14/07/2011 la 00:10
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
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();
    }

}

Cu respect, Sriwantha Sri Aravinda

Publicat 14/07/2011 la 00:12
sursa de către utilizator

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