我试图证明给定的树是一个二进制搜索树。我将输入一个二叉树,我只想让函数返回true。
bool isbinary(bstnode* root){
if(root==NULL) return;
isbinary(root->left);
isbinary(root->right);
int data1=root->data;
if((root->left->data<=data1&&root->right->data>data1) ||
(root->left->data<=data1&&root->right==NULL) ||
(root->right->data>data1&&root->left==NULL))
return true;
// this doesnt work! i want to know the reason and a possible
// solution in my line of thinking. TIA
}
如果要返回true
/false
,那么函数返回类型应该是bool
而不是void
。
bool isbinary(bstnode* root){
.
.
.
return true/false;
}
编辑:-当你纠正拼写错误时,你的递归仍然有很多缺陷。如果您没有严格掌握递归,那么您可以对BST进行简单的有序遍历,并将每个节点同时存储在temp array
中。正如您所知,有序遍历提供了排序的节点,您可以通过temp array
轻松地检查它。