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

返回左子树的判断结果与右子树的判断结果的逻辑与运算结果,表示左子树和右子树均为二叉搜索树时,整个树才是二叉搜索树。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务