用上下界去判断二叉搜索树
import java.util.*;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val){
this.val=val;
this.left=null;
this.right=null;
}
};
public class Main{
public static void main(String []args){
int n=0,r1=0;
Scanner input=new Scanner(System.in);
n=input.nextInt();
r1=input.nextInt();
TreeNode root;
TreeNode[]tree =new TreeNode[n+1];
for(int i=0;i<=n;i++){
tree[i]=new TreeNode(1);
}
for (int i=1;i<=n;i++) {
int v,l,r;
v=input.nextInt();
l=input.nextInt();
r=input.nextInt();
tree[i].val = v;
tree[i].left=(l==0?null:tree[l]);
tree[i].right=(r==0?null:tree[r]);
}
root=tree[r1];
Main main=new Main();
int low=Integer.MIN_VALUE;
int high=Integer.MAX_VALUE;
boolean res=main.isBinarySearchTree(root,low,high);
if(res){
System.out.println("true");
return;
}
System.out.println("false");
return;
}
boolean isBinarySearchTree(TreeNode root,int lowBaund,int highBaund) {
if(root==null){
return true;
}
int val=root.val;
if(val<=lowBaund||val>=highBaund){
return false;
}
boolean left=isBinarySearchTree(root.left,lowBaund,val);
boolean right=isBinarySearchTree(root.right,val,highBaund);
return left&&right;
}
}

京公网安备 11010502036488号