int secondSmallestInBST(struct node * tNode) {
if(tNode==NULL || (tNode->left==NULL && tNode->right==NULL)) // case 1 and 2
exit;
if(tNode->left == NULL){ // case 3
tNode=tNode->right;
while(tNode->left!=NULL){
tNode=tNode->left;
}
return tNode->data;
} // general case.
node * parent=tNode,* child = tNode->left;
while(child->left!=NULL){
parent = child;
child = child->left;
}
return parent->data;
不是每個測試用例通過了我的代碼中發現第二個最小元素。如果我的代碼中缺少任何測試用例,建議我。我只是在二叉搜索樹中找到第二小元素。
int secondSmallestInBST(struct node * tNode) {
if(tNode==NULL || (tNode->left==NULL && tNode->right==NULL)) // case 1 and 2
exit;
if(tNode->left == NULL){ // case 3
tNode=tNode->right; // find smallest in right bst.
while(tNode->left!=NULL){
tNode=tNode->left;
}
return tNode->data;
} // general case.
if(tNode->left->left==NULL && tNode->left->right!=NULL){ //missed case.
tNode=tNode->left->right;
while(tNode->left!=NULL){
tNode=tNode->left;
}
return tNode->data;
}
node * parent= tNode;
node * child = tNode->left;
while(child->left!=NULL){
parent = child;
child = child->left;
}
return parent->data;
}
//仍下落不明在此代碼一些測試用例。
[該程序的完整源代碼(http://ideone.com/m6zu8D) 這裏是完整的代碼。 –
請將編程語言添加爲標記,如果可以,請提供失敗測試的示例 – MrPk
@MrPk我在問我是否忘記了我的代碼中的一些測試用例。 –