我想創建/創建一個BST,但它似乎不能正常工作。我真的一直坐在這裏好幾個小時,試圖弄清楚發生了什麼。它已經達到了我繪製了100萬張圖的目的,但我的代碼卻讓我失望。我需要將一個根節點傳遞給一個函數。然後我需要遍歷樹,直到找到函數的父字符串參數與樹父節點的字符串一致。如果我確實找到它,我必須將該字符串插入到父項中,並從該父項創建兩個新的子項。如果我找不到父字符串,那麼我返回false。如何添加孩子到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;
}
此外,我需要另一種方法,採取我已建立的樹,並更正字符串。因此,該方法修改父字符串(如果找到),並查找其子級(如果找到),並將這些字符串替換爲在方法參數中找到的那些字符串。這就像添加一棵子樹而不用擰上整棵樹。提前致謝!
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;
}