我试图证明给定的树是二叉搜索树。我将输入一个二叉树,我想要的只是我的函数返回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
}
答案 0 :(得分:1)
如果您想返回true
/ false
,那么您的函数返回类型应为bool
而不是void
。
bool isbinary(bstnode* root){
.
.
.
return true/false;
}
编辑: - 当你纠正错字时,你的递归仍有许多缺陷。如果你没有紧紧抓住递归,那么你可以进行BST的简单顺序遍历并将每个节点存储在{{1 }} 同时。如您所知,inorder遍历提供了已排序的节点,您可以通过temp array
轻松检查它。