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布尔型
*/
public boolean isValidBST (TreeNode root) {
// write code here
if (root == null) {
return false;
}
List<Integer> inorderList = new ArrayList<>();
inOrder(root, inorderList);
List<Integer> sortedList = new ArrayList<>(inorderList);
sortedList.sort(null);
return inorderList.equals(sortedList);
}
public void inOrder(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
inOrder(root.left, list);
list.add(root.val);
inOrder(root.right, list);
}
}
该代码使用的编程语言是Java。
该题考察的知识点是二叉树的遍历和判断二叉搜索树(BST)的性质。
代码的解释如下:
- 首先定义了一个
TreeNode类,用于表示二叉树的节点。 - 接着定义了一个
Solution类,包含了一个isValidBST方法,用于判断给定的二叉树是否是有效的二叉搜索树。 isValidBST方法内部调用了inOrder方法,进行中序遍历,将节点值存储在列表中。- 中序遍历会按照左子树、根节点、右子树的顺序遍历二叉树。
- 创建了一个
inorderList列表来存储中序遍历的结果,然后复制一份到sortedList列表中,并对sortedList进行排序。 - 最后,判断
inorderList与sortedList是否相等,如果相等,则说明给定二叉树是有效的二叉搜索树,返回true;否则,返回false。

京公网安备 11010502036488号