【2022统考真题】数据结构-二叉树判断是否是BST

题目:给一个顺序数组存放的二叉树,判断是否是二叉搜索树BST。前提:空结点用-1表示。
问题思路:类似链表二叉树,用递归的思想来判断是否为BST。参考98验证二叉搜索树
代码:

bool helper(int SqBiTNode[],int idx,long long lower,long long upper,int treenum){
    if(idx >= treenum ||SqBiTNode[idx]==-1)return true;//这里要考虑是否越界
    if(SqBiTNode[idx] <=lower || SqBiTNode[idx]>=upper){
        return false;//判断自己是否越界
    }
    return helper(SqBiTNode,idx*2,lower,SqBiTNode[idx],treenum)&&helper(SqBiTNode,idx*2+1,SqBiTNode[idx],upper,treenum);//然后递归判断左右子树
}

bool isBST(SqBiTree *root){
    return helper(root->SqBiTNode,1,LONG_MIN,LONG_MAX,root->ElemNum);//从1开始,一一对应;
}

重要

顺序存储的二叉树如果是1开始的那么\(idx->left = idx*2;idx->right = idx*2+1\);
如果是0,那么我们\(idx->left = idx*2+1;idx->right = idx*2+2\);
可以看作1开头的数组整体左移一位。

posted @ 2026-08-18 22:34  q_z_chen  阅读(24)  评论(0)    收藏  举报