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