J'essaie de créer/créer un BST, mais cela ne semble pas fonctionner correctement. J'ai littéralement été assis ici pendant des heures à essayer de comprendre ce qui se passe. C'est arrivé au point où j'ai dessiné un million de diagrammes pour comprendre cela, mais mon code me manque. Je dois passer dans un nœud racine dans une fonction. Ensuite, j'ai besoin de traverser l'arbre jusqu'à ce que je trouve que le paramètre chaîne parent de la fonction coïncide avec la chaîne du nœud parent de l'arbre. Si je le trouve, je dois insérer la chaîne dans le parent, et créer deux nouveaux enfants à partir de ce parent. Si je ne trouve pas la chaîne parent, alors je renvoie false.Comment ajouter des enfants à BST
bool insertNode(BSTNode *n, char* parentQ, char* leftQ, char* rightQ)
{
if(n->Q == parentQ)
{
n->left = new BSTNode(leftQ);
n->right = new BSTNode(rightQ);
return true;
}
else if(n->Q != parent)
{
insertNode(n->left,parentQ,leftQ,rightQ);
insertNode(n->right,parentQ,leftQ,rightQ);
}
else
return false;
}
Je dois aussi faire une autre méthode qui prend l'arbre que j'ai créé, et corrige les cordes. Ainsi, la méthode modifie la chaîne parent, si elle est trouvée, et regarde ses enfants, si elle est trouvée, et remplace ces chaînes par celles trouvées dans les paramètres de la méthode. C'est un peu comme ajouter un sous-arbre sans visser tout l'arbre. Merci d'avance!
bool changeNode(BSTNode *n,char* parentQ, char* leftQ, char* rightQ)
{
if(n->Q == leftQ)
{
n->Q = parentQ;
n->left = new BSTNode(leftQ);
n->right = new BSTNode(rightQ);
return true;
}
else if(n->Q == rightQ)
{
n->Q = parentQ;
n->left = new BSTNode(leftQ);
n->right = new BSTNode(rightQ);
return true;
}
else if(n->Q != leftQ)
{
changeNode(n->left,parentQ,leftQ, rightQ);
}
else if(n->Q != rightQ)
{
changeNode(n->right,parentQ,leftQ,rightQ);
}
return false;
}