二叉查找树其实!
就是平衡树啦
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