我正在尝试制作/创建 BST,但它似乎无法正常工作。我已经坐在这里好几个小时试图弄清楚发生了什么。它已经到了我已经绘制了一百万张图表来解决这个问题的地步,但是我的代码让我失败了。我需要将根节点传递给函数。然后我需要遍历树,直到我发现函数的父字符串参数与树父节点的字符串重合。如果我找到它,我必须将字符串插入父级,并从该父级创建两个新子级。如果找不到父字符串,则返回 false。
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;
}
此外,我需要制作另一种方法来获取我建立的树并更正字符串。因此,该方法修改父字符串(如果找到),并查看其子字符串(如果找到),并将这些字符串替换为在方法参数中找到的字符串。这有点像添加一个子树而不把整个树搞砸。提前致谢!
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;
}