1、题目:
给你一个二叉树的根节点 root
,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
- 节点的左子树只包含 小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
2、题解:
对于上述二叉搜索树的定义而言,使用中序遍历得到的值构成的序列一定升序,且不包含重复元素。那么在进行中序遍历时可以实时检测当前节点的值是否大于前一个中序遍历得到的节点的值即可。
3、代码:
private long pre = Long.MIN_VALUE;
public boolean isValidBST(TreeNode root) {
if(root == null){
return true;
}
if(!isValidBST(root.left)){
return false;
}
if(root.val<=pre){
return false;
}
pre = root.val;
return isValidBST(root.right);
}