Je regarde le code suivant: http://netrsc.blogspot.com/2010/04/net-c-binary-tree.htmlQuestion sur l'arbre de recherche binaire
Suis-je raison de penser que la condition while (!Found)
itérera l'arbre?
protected void Insert(T item)
{
TreeNode<T> TempNode = Root;
bool Found=false;
while (!Found)
{
int ComparedValue = TempNode.Value.CompareTo(item);
if(ComparedValue<0)
{
if(TempNode.Left==null)
{
TempNode.Left=new TreeNode<T>(item,TempNode);
++NumberOfNodes;
return;
}
else
{
TempNode=TempNode.Left;
}
}
else if(ComparedValue>0)
{
if(TempNode.Right==null)
{
TempNode.Right=new TreeNode<T>(item,TempNode);
++NumberOfNodes;
return;
}
else
{
TempNode=TempNode.Right;
}
}
else
{
TempNode=TempNode.Right;
}
}
}
De même, pour les méthodes de recherche et de traversée, comment fonctionnent-elles? Si rien n'est renvoyé par la méthode Traversal mais par la branche de gauche, la boucle de Find s'exécutera-t-elle à nouveau? Comment saurait-il exécuter la bonne branche?
protected IEnumerable<TreeNode<T>> Traversal(TreeNode<T> Node)
{
if (Node.Left != null)
{
foreach (TreeNode<T> LeftNode in Traversal(Node.Left))
yield return LeftNode;
}
yield return Node;
if (Node.Right != null)
{
foreach (TreeNode<T> RightNode in Traversal(Node.Right))
yield return RightNode;
}
}
Merci