题解 | #牛群中的编号是否有效#
牛群中的编号是否有效
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; } } }