【模板】判断二叉查找树

一世执手 提交于 2019-12-01 07:21:20

二叉查找树其实!

就是平衡树啦

const int N=1e6+10;

int n,m;

struct node{
    int val,lson,rson;
}a[N];

inline bool is_bst(int root,int l_bound,int u_bound){
    if(root==0)return 1;
    int cur=a[root].val;
    return (l_bound <cur) && (cur < u_bound) && is_bst(a[root].lson,l_bound,cur) && is_bst(a[root].rson,cur,u_bound);
    //值域严格小于/大于 
}

int main(){
    rd(n);
    rep(i,1,n){
        rd(a[i].val),rd(a[i].lson),rd(a[i].rson);
    }
    cout<<is_bst(1,INT_MIN,INT_MAX);
    return 0;
}
//严格小于/大于 
/*
5
6 4 5
5 0 0
3 0 0
4 3 2
7 0 0
*/
//1
//可以等于
/*
5
6 4 5
5 0 0
3 0 0
5 3 2
7 0 0
*/
//1 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!