题解 | #判断是不是二叉搜索树#
判断是不是二叉搜索树
https://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
// boolean ifBST = true;
// public boolean isValidBST (TreeNode root) {
// // write code here
// if (root == null) return false;
// if (root.left != null) isValidBST(root.left);
// if (root.right != null) isValidBST(root.right);
// if (root.left == null && root.right == null) ifBST = ifBST && true;
// else if (root.left == null && root.right.val > root.val) ifBST = ifBST && true;
// else if (root.right == null && root.left.val < root.val) ifBST = ifBST && true;
// else if (root.left.val < root.val && root.right.val > root.val) ifBST = ifBST &&
// true;
// else ifBST = ifBST && false;
// return ifBST;
// } // 为什么这个会出问题,因为这个只考虑了当前的子树的节点和左右孩子的值的大小关系
// 但是实际上要求孩子的孩子的值也要满足这个要求
// 经过细心分析,实际上,搜索二叉树是一个十分有序的结构
// 所以我们只需要在遍历时顺序上有一些改动就好了
int minValue = Integer.MIN_VALUE;
public boolean isValidBST (TreeNode root) {
// write code here
if(root==null) return true;
if(!isValidBST(root.left)){
return false;
}
if(root.val<minValue){
return false;
}
minValue = root.val;
return isValidBST(root.right);
}
}
总结一个中序遍历方法的模板:
1, if(root==null) return
2, traval(root.left)
3, 相关操作
4,travel(root.right)
正浩创新EcoFlow公司福利 704人发布
