给你一个二叉树的根节点 root
,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
- 节点的左子树只包含 小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
思路一:递归
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文章来源:https://www.toymoban.com/news/detail-674265.html
总结:
本题考察二叉树的相关应用,对二叉搜索树定义理解后使用递归将每个数值记录再判断即可得到答案。文章来源地址https://www.toymoban.com/news/detail-674265.html
到了这里,关于leetcode做题笔记98. 验证二叉搜索树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!