leetcode98验证二叉搜索树
Posted lisin-lee-cooper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode98验证二叉搜索树相关的知识,希望对你有一定的参考价值。
一.问题描述
-
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
-
假设一个二叉搜索树具有如下特征:
-
节点的左子树只包含小于当前节点的数。
-
节点的右子树只包含大于当前节点的数。
-
所有左子树和右子树自身必须也是二叉搜索树。
-
示例 1:
-
输入:
-
2
-
/ \\
-
1 3
-
输出: true
-
示例 2:
-
输入:
-
5
-
/ \\
-
1 4
-
/ \\
-
3 6
-
输出: false
-
解释: 输入为: [5,1,4,null,null,3,6]。
-
根节点的值为 5 ,但是其右子节点值为 4 。
思路:中序遍历二叉树,如果后面遍历的数比前面大,则非二叉搜索树
二.示例代码
public static void main(String[] args) {
TreeNode root = new TreeNode(5);
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(9);
TreeNode node3 = new TreeNode(7);
TreeNode node4 = new TreeNode(10);
root.left = node1;
root.right = node2;
node2.left = node3;
node2.right = node4;
boolean result = isBST(root);
System.out.println(result);
}
static long pre = Long.MIN_VALUE;
public static boolean isBST(TreeNode root) {
if (root == null) {
return true;
}
if (!isBST(root.left)) {
return false;
}
if (root.val <= pre) {
return false;
}
pre = root.val;
return isBST(root.right);
}
以上是关于leetcode98验证二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章