Δημιουργήστε γρήγορα ένα δυαδικό δέντρο σε 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 Σρι Aravinda

Απαντήθηκε 14/07/2011 στις 00:12
πηγή χρήστη

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