En fait, c’est l’erreur que tout le monde commet dans une interview.
Leftchild doit être coché (minLimitof node, node.value)
Rightchild doit être coché (node.value, MaxLimit of node)
IsValidBST(root,-infinity,infinity);
bool IsValidBST(BinaryNode node, int MIN, int MAX)
{
if(node == null)
return true;
if(node.element > MIN
&& node.element < MAX
&& IsValidBST(node.left,MIN,node.element)
&& IsValidBST(node.right,node.element,MAX))
return true;
else
return false;
}
Une autre solution (si l’espace n’est pas une contrainte): effectuez une traversée en ordre de l’arbre et stockez les valeurs de nœud dans un tableau. Si le tableau est dans l'ordre trié, c'est un BST valide sinon pas.