mercredi 11 décembre 2024

static int FindParent(int processNumber)

 en C#, Un arbre où chaque numéro parent est le nombre d'enfants, en respectant l'ordre. Par exemple, le nœud 1 a un seul enfant, nommé 2. Le nœud 2 a deux enfants, nommés 3 et 4. Le nœud 3 a trois enfants, nommés 5, 6 et 7. Le nœud 4 a quatre enfants, nommés 8, 9, 10 et 11. Le nœud 5 a cinq enfants, nommés 12, 13, 14, 15 et 16. Et ainsi de suite. Le besoin ici c'est de retourner le ProcessNumber du parent à partir d'un ProcessNumber donné.



using System;


class Program

{

    static void Main(string[] args)

    {

        int processNumber = 13; // Exemple d'entrée

        int parent = FindParent(processNumber);

        Console.WriteLine($"Le parent du nœud {processNumber} est : {parent}");

    }


    static int FindParent(int processNumber)

    {

        if (processNumber == 1)

            return -1; // Le nœud racine n'a pas de parent.


        int current = 1; // Numéro actuel du nœud.

        int start = 2; // Premier numéro d'enfant.


        while (start <= processNumber)

        {

            int end = start + current - 1; // Dernier numéro d'enfant pour le nœud actuel.

            if (processNumber >= start && processNumber <= end)

                return current;


            current++; // Passer au nœud suivant.

            start = end + 1; // Mettre à jour la plage des enfants pour le prochain nœud.

        }


        return -1; // Si aucun parent n'est trouvé (ne devrait pas arriver si les données sont valides).

    }

}





===========================



static int FindParent(int processNumber)
{
    if (processNumber == 1)
        return -1; // Le nœud racine n'a pas de parent.

    int start = 2; // Premier numéro d'enfant.

    for (int current = 1; start <= processNumber; current++)
    {
        int end = start + current - 1; // Dernier numéro d'enfant pour le nœud actuel.

        if (processNumber >= start && processNumber <= end)
            return current;

        start = end + 1; // Mettre à jour la plage des enfants pour le prochain nœud.
    }

    return -1; // Si aucun parent n'est trouvé (ne devrait pas arriver si les données sont valides).
}

Aucun commentaire:

Enregistrer un commentaire