Schnell einen binären Baum in C #

stimmen
1

Jedes Mal, wenn wir versuchen, ein kleines Problem auf binäre Bäume mit Bezug zu tun dauert es altert den grundlegenden Code zu schreiben, einen ausreichend großen binären Baum zu füllen. Ich mag einen kleinen Code haben, um schnell einen binären Suchbaum mit Zufallswerten initialisiert zu konstruieren.

Veröffentlicht am 14/07/2011 um 00:10
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

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

}

Grüße, Sriwantha Sri Aravinda

Beantwortet am 14/07/2011 um 00:12
quelle vom benutzer

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