Raskt å lage et binært tre i C #

stemmer
1

Når vi prøver å gjøre et lite problem relatert til binære trær det tar evigheter å skrive den grunnleggende kode for å fylle en stor nok binært tre. Jeg vil ha en liten kode for å raskt konstruere et binært søketre initialisert med tilfeldige verdier.

Publisert på 13/07/2011 klokken 23:10
kilden bruker
På andre språk...                            


1 svar

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

}

Hilsen, Sriwantha Sri Aravinda

Svarte 13/07/2011 kl. 23:12
kilden bruker

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