题解 | #牛群中的编号是否有效# java
牛群中的编号是否有效
https://www.nowcoder.com/practice/2b4279d545124277a06a8e5eaa802375
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 true;
int val = root.val;
boolean left = true, right = true;
if (root.left != null) {
if (root.left.val >= val)
return false;
left = isValidBST(root.left);
}
if (root.right != null) {
if (root.right.val <= val)
return false;
right = isValidBST(root.right);
}
return left && right;
}
}
代码使用的编程语言是Java。
题目考察的知识点是二叉搜索树和递归。二叉搜索树是一种常见的数据结构,对于判断一颗二叉树是否为二叉搜索树,常用的方法就是通过递归判断左右子树是否满足二叉搜索树的条件。
这段代码实现了一个函数isValidBST,用于判断给定二叉树是否为二叉搜索树(Binary Search Tree, BST)。
二叉搜索树是一种特殊的二叉树,在二叉搜索树中,每个节点的值都大于其左子树中的任意节点的值,小于其右子树中的任意节点的值。基于此特性,可以通过中序遍历二叉搜索树得到一个递增的有序序列。
函数接受一个指向根节点的指针root,首先判断根节点是否为空,若为空,则认为是一个合法的二叉搜索树,返回true。然后获取当前根节点的值val。
通过递归的方式判断左子树和右子树是否满足二叉搜索树的要求。对于左子树,判断左子节点的值是否小于根节点的值,如果不满足,则返回false;对于右子树,判断右子节点的值是否大于根节点的值,如果不满足,返回false。
返回左子树的判断结果与右子树的判断结果的逻辑与运算结果,表示左子树和右子树均为二叉搜索树时,整个树才是二叉搜索树。