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).
}
}
Aucun commentaire:
Enregistrer un commentaire