题解 | #牛群中的编号是否有效#
牛群中的编号是否有效
https://www.nowcoder.com/practice/2b4279d545124277a06a8e5eaa802375
知识点:二叉树,搜索二叉树
首先明确搜索二叉树的定义:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
我们可以使用递归的方式来解决,首先确定终止条件,若当前节点为空,返回true,若不为空,判断其左右节点是否为空,为空则符合搜索二叉树定义,若不为空,则需要判定其节点值是否符合搜索二叉树的定义,即左子节点值小于当前节点值,右子节点值大于当前节点值。若符合条件,则递归向下遍历子树。
Java题解如下:
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 leftVal = root.left == null? root.val - 1: root.left.val;
int rightVal = root.right == null? root.val + 1: root.right.val;
if(root.val > leftVal && root.val < rightVal) {
return isValidBST(root.left) && isValidBST(root.right);
}else {
return false;
}
}
}