En c#, ecrire code: un arbre est compose de noeuds qui respectent les regles suivante:
Un noeud tient une valeur correspondant a un entier.
Hormis le noeud a la racines de l'arbre, un noeud a toujours un seul autre noeud qui le référence. Un noeud n'a pas plus de duex enfants, appeles noeud a gauche et noeud a droite. Si un noeud n'a pas d'enfant a droite ou a gauche, alors la reference correspondante est null.
La valeur tenue par tout enfant du sous arbre a gauche est inférieure a la valeur de son parent et la valeur tenue par tout enfant du sous arbre a droite est supérieure a la valeur de son parent. Pour simplifier le code, tout est combine dans une simple class nommée Node.
La hauteur de l'arbre (la distance entre le noeud le plus éloigné et la racine) est comprise entre 0 et 500000 noeuds. Question: implementez une nouvelle methode de Node nommé Find(int v) qui retourne le noeud tenant la valeur v. Si ce noeud n'existe pas alors Find(v) devra retourner null.
using System; using System.Collections.Generic; public class Node { public int Value { get; private set; } public Node Left { get; private set; } public Node Right { get; private set; } public Node(int value) { Value = value; Left = null; Right = null; } public void Add(int value) { if (value < Value) { if (Left == null) { Left = new Node(value); } else { Left.Add(value); } } else { if (Right == null) { Right = new Node(value); } else { Right.Add(value); } } } public Node Find(int v) { Node current = this; while (current != null) { if (v == current.Value) { return current; } else if (v < current.Value) { current = current.Left; } else { current = current.Right; } } return null; } } class Program { static void Main(string[] args) { Node root = new Node(10); root.Add(5); root.Add(15); root.Add(3); root.Add(7); root.Add(12); root.Add(17); int searchValue = 12; Node resultNode = root.Find(searchValue); if (resultNode != null) { Console.WriteLine("Node with value " + searchValue + " found."); } else { Console.WriteLine("Node with value " + searchValue + " not found."); } } }
Aucun commentaire:
Enregistrer un commentaire