我寫了這個遞歸函數,它按預期工作。它驗證二叉樹,即它檢查給定的二叉樹是否是二叉搜索樹,並且也給出正確的答案。驗證二叉樹的小問題
不過,我得到一個編譯器警告說:
Control may reach end of non-void function
我不知道這是什麼錯誤是指:函數返回一個bool
並不僅僅是脫落的功能結束。我只是不知道如何克服它,因爲它返回bool
。
我試圖尋找一些我可能在遞歸時忽略的東西,但無濟於事。
bool isBSTRecursively(Node * root){
if (!root) {
return true;
}else if (!root->getLeft() && !root->getRight()){
return true;
}else if(!root->getLeft()){
if (root->getRight()->getData() > root->getData()) {
return isBSTRecursively(root->getRight());
}
}else if (!root->getRight()){
if (root->getLeft()->getData() < root->getData()) {
return isBSTRecursively(root->getLeft());
}
}else{
return (isBSTRecursively(root->getLeft()) && isBSTRecursively(root->getRight()));
}
}
非唯一數據如何?我的意思是,一個節點及其兩個子節點(或兩者)中的任何一個可能具有與節點中相同的數據,並且不會違反樹的分類。你的代碼是否處理這種情況? – 2013-03-24 07:55:49
另外,怎麼樣循環,讓你的樹形圖?你也想檢查一下嗎? – 2013-03-24 07:56:41
@AlexeyFrunze,你是對的。感謝您引起我的注意。我也會嘗試納入這些條件。 – totjammykd 2013-03-24 08:11:46