给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉排序树。
有效 二叉排序树定义如下:
节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉排序树。
树中节点数目范围在[1, 104] 内 −231<= Node.val <= 231 - 1
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/validate-binary-search-tree
函数接口定义:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
public static boolean isValidBST(TreeNode root)
root 是二叉树的根结点。
裁判测试程序样例:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
BiTree tree = new BiTree(str);
System.out.println(isValidBST(tree.root));
}
/* 请在这里填写答案 */
输入样例1:
2 1 null null 3 null null
输出样例1:
在这里给出相应的输出。例如:
true
输入样例2:
5 1 null null 4 3 null null 6 null null
输出样例:
根节点的值是 5 ,但是右子节点的值是 4 。
false
代码如下:
static boolean s = true;
public static boolean isValidBST(TreeNode root){
if(root == null)
return true;
if(root.left != null){
if(root.left.val >= root.val){
s = false;
}
}
if(root.right != null){
if(root.right.val <= root.val){
s = false;
}
}
isValidBST(root.left);
isValidBST(root.right);
return s;
}