首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
判断是不是二叉搜索树
[编程题]判断是不是二叉搜索树
热度指数:81702
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。
二叉搜索树满足每个节点的左子树上的所有节点均小于当前节点且右子树上的所有节点均大于当前节点。
例:
图1
图2
数据范围:节点数量满足
,节点上的值满足
示例1
输入
{1,2,3}
输出
false
说明
如题面图1
示例2
输入
{2,1,3}
输出
true
说明
如题面图2
说明:本题目包含复杂数据结构TreeNode,
点此查看相关信息
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(631)
分享
提交结果有问题?
131个回答
169篇题解
开通博客
牛客题解官
发表于 2022-04-22 12:02:33
精华题解
题目主要信息: 判断给定的一棵二叉树是否是二叉搜索树 二叉搜索树每个左子树元素小于根节点,每个右子树元素大于根节点,中序遍历为递增序 举一反三: 学习完本题的思路你可以解决如下题目: BM30. 二叉搜索树与双向链表 BM37. 二叉搜索树的最近公共祖先 方法一:递归(推荐使用) 知识点1:二叉
展开全文
AimerAimer
发表于 2022-01-19 17:43:30
题意: 给定一个二叉树根节点,请你判断这棵树是不是二叉搜索树。 二叉搜索树满足每个节点的左子节点小于
展开全文
空中转体一周半
发表于 2022-02-28 13:44:24
利用二叉搜索树的特性:中序遍历为升序,遍历二叉树即可。每次记录一下前驱节点的值,判断当前节点是否比前驱节点大,如果比前驱小,则遍历结束。如果遍历到最后一个节点还是满足则为二叉搜索树。 /* * public class TreeNode { * int val = 0; * Tree
展开全文
xqxls
发表于 2022-03-07 21:59:10
题意整理 给定一颗二叉树。 判断该树是否是二叉搜索树。 方法一(递归) 1.思路整理 判断搜索二叉树(BST): 考虑搜索二叉树的定义,每一个节点的值应该大于等于左子树中的最大值,小于等于右子树中的最小值。所以我们可以利用递归遍历每一个节点,如果某个节点不满足定义,则不合法,直接返回false。
展开全文
牛客420080390号
发表于 2022-03-18 15:53:27
```# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定
展开全文
菜鸡孙连城
发表于 2022-03-19 15:19:56
第一种方法:二叉搜索树的中序遍历一定是递增的,只需判断中序遍历的数组即可 function isValidBST( root ) { function inOrder(root){ if(root==null) return; inOrder(root.left);
展开全文
蛋糕店筹备中
发表于 2022-03-02 17:23:47
方法一:判断每一个结点,必定存在该结点的值大于左子树的最大值,小于右子树的最小值 * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; * * C语言声明定义全局变量
展开全文
叫什么都行呀
发表于 2022-10-04 15:45:59
bool isValidBST(struct TreeNode* root ) { // write code here
展开全文
ETO-ccc
发表于 2023-03-27 12:07:23
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {
展开全文
unixxxxxx
发表于 2022-03-24 09:40:25
为什么没有 python 版本?? # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中
展开全文
littlemuggle
发表于 2022-05-04 21:51:23
误区:单独判断某一个子树是否满足搜索树是不够的 class Solution: def isValidBST(self , root: TreeNode) -> bool: # write code here if not root:
展开全文
问题信息
树
难度:
131条回答
631收藏
1965浏览
热门推荐
通过挑战的用户
查看代码
随机昵称都有什...
2023-02-21 18:08:14
暴风陨石坠
2022-09-17 17:11:45
THFF
2022-09-16 17:18:31
牛客25458...
2022-09-16 16:38:59
牛客30600...
2022-09-16 16:24:46
相关试题
体育课测验(二)
广度优先搜索(BFS)
拓扑排序
dfs
评论
(2)
PMOS和NMOS的区别
元器件
评论
(1)
游戏内数据分析涉猎的少,如何证明自...
评论
(1)
之前的经历中单品数据分析的经验丰富...
评论
(1)
什么样的人适合做数据分析
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
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 } }
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ bool isValidBST(TreeNode* root) { // write code here } };
#coding:utf-8 # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param root TreeNode类 # @return bool布尔型 # class Solution: def isValidBST(self , root ): # write code here
using System; using System.Collections.Generic; /* public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode (int x) { val = x; } } */ class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ public bool isValidBST (TreeNode root) { // write code here } }
/* * function TreeNode(x) { * this.val = x; * this.left = null; * this.right = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ function isValidBST( root ) { // write code here } module.exports = { isValidBST : isValidBST };
val = $val; } }*/ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ function isValidBST( $root ) { // write code here }
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param root TreeNode类 # @return bool布尔型 # class Solution: def isValidBST(self , root: TreeNode) -> bool: # write code here
package main import "fmt" import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ func isValidBST( root *TreeNode ) bool { // write code here }
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ bool isValidBST(struct TreeNode* root ) { // write code here }
# class TreeNode # attr_accessor :val, :left, :right # def initialize(val, left = nil, right = nil) # @val, @left, @right = val, left, right # end # end # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param root TreeNode类 # @return bool布尔型 # class Solution def isValidBST(root) # write code here end end
/** * class TreeNode(var val: Int) { * var left: TreeNode = null * var right: TreeNode = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ def isValidBST(root: TreeNode): Boolean = { // write code here } }
/** * class TreeNode(var `val`: Int) { * var left: TreeNode? = null * var right: TreeNode? = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ fun isValidBST(root: TreeNode?): Boolean { // write code here } }
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 } }
/*class TreeNode { * val: number * left: TreeNode | null * right: TreeNode | null * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ export function isValidBST(root: TreeNode): boolean { // write code here }
/** * public class TreeNode { * public var val: Int * public var left: TreeNode? * public var right: TreeNode? * public init(_ val: Int=0, _ left: TreeNode?=nil, _ right: TreeNode?=nil) { * self.val = val * self.left = left * self.right = right * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ func isValidBST ( _ root: TreeNode?) -> Bool { // write code here } }
/** * #[derive(PartialEq, Eq, Debug, Clone)] * pub struct TreeNode { * pub val: i32, * pub left: Option
>, * pub right: Option
>, * } * * impl TreeNode { * #[inline] * fn new(val: i32) -> Self { * TreeNode { * val: val, * left: None, * right: None, * } * } * } */ struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ pub fn isValidBST(&self, root: Option
>) -> bool { // write code here } }
{1,2,3}
false
{2,1,3}
true