leetcode做题笔记98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树只包含小于当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

思路一:递归

cpp 复制代码
void inOrder(struct TreeNode* root,int arr[],int *len){
    if(root != NULL){
        inOrder(root->left,arr,len);
        arr[(*len)++]=root->val;
        
        inOrder(root->right,arr,len);
    }
}
bool isValidBST(struct TreeNode* root){
    int arr[10000];
    int len=0;
    inOrder(root,arr,&len);
    for(int i=0;i<len-1;i++){
        if(arr[i]>=arr[i+1]){
            return false;
        }
    }
    return true;
}

分析:

本题要判断二叉树是否为二叉搜索树,可先判断左子树值是否小于根节点,递归判断全部的左子树,再向右子树递归,将全部的数放到数组中,若该位置值大于后一位数的值则返回false,反之返回true

总结:

本题考察二叉树的相关应用,对二叉搜索树定义理解后使用递归将每个数值记录再判断即可得到答案。

相关推荐
咩咩不吃草2 小时前
【逻辑回归】:从模型训练到评价
算法·机器学习·逻辑回归
ersaijun2 小时前
机器人运动控制关键算法体系:从理论框架到前沿实践
算法·机器人
smj2302_796826522 小时前
解决leetcode第3826题.最小分割分数问题
数据结构·python·算法·leetcode
多多*2 小时前
2026年最新 测试开发工程师相关 Linux相关知识点
java·开发语言·javascript·算法·spring·java-ee·maven
妄汐霜2 小时前
小白学习笔记(javaweb前端三大件)
笔记·学习·web
VT.馒头2 小时前
【力扣】2705. 精简对象
javascript·数据结构·算法·leetcode·职场和发展·typescript
元亓亓亓2 小时前
LeetCode热题100--136. 只出现一次的数字--简单
算法·leetcode·职场和发展
tb_first2 小时前
万字超详细苍穹外卖学习笔记5
java·数据库·spring boot·笔记·学习·spring
2301_763472582 小时前
实时系统下的C++编程
开发语言·c++·算法
张祥6422889042 小时前
二次型:从线性代数到测量平差的桥梁
线性代数·算法·机器学习