Maak snel een binaire boom in C #

stemmen
1

Wanneer we proberen om een ​​klein probleem met betrekking tot binaire bomen doen het eeuwen duurt om de basis code om een ​​groot genoeg is binaire boom bevolken schrijven. Ik wil een kleine code om een ​​binaire zoekboom geïnitialiseerd met willekeurige waarden snel te construeren.

De vraag is gesteld op 14/07/2011 om 00:10
bron van user
In andere talen...                            


1 antwoorden

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

}

Met vriendelijke groet, Sriwantha Sri Aravinda

antwoordde op 14/07/2011 om 00:12
bron van user

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