[二叉树算法]关于判断是否为BST的算法
2024-08-26 19:43:14
//判断是否为BST 搜索树==二叉排序树 1、递归知最大最小值。2、先中序判是否单调
bool IsValidBST(BTNode *p,int low,int high){
if(p==NULL){
return true;
}else{
if(low<p->data && high>p->data){
return(IsValidBST(p->lchild,low,high) &&
IsValidBST(p->rchild,low,high));
}else{
return false;
}
}
}
void IsBST(BTNode *p,int &k,bool &fail){
if(p && !fail){
IsBST(p->lchild,k,fail);
if(k<p->data){
k=p->data;
}else{
fail=true;
}
IsBST(p->rchild,k,fail);
}
}
bool isValidBST(TreeNode *root) {
vector<int> res;
isValidBST(root, res);
int len = res.size();
bool flag = true;
for (int i=; i<len-; i++){
if (res[i] >= res[i+]){
flag = false;
break;
}
}
return flag;
}
void isValidBSTOrder(TreeNode *root, vector<int> &res){
if (root == NULL)
return;
isValidBST(root->left, res);
res.push_back(root->val);
isValidBST(root->right, res);
}
//判断是否为BST
bool fail=false;
void IsBST(BTNode *p,int &k,bool &fail){
if(p && !fail){
IsBST(p->lchild,k,fail);
if(k<p->data){
k=p->data;
}else{
fail=true;
}
IsBST(p->rchild,k,fail);
}
}
最新文章
- MVC跨域CORS扩展
- gradle项目中资源文件的相对路径打包处理技巧
- Interpolation in MATLAB
- linux运维笔记——常用命令详解diff
- Bootstrap系列 -- 36. 向上弹起的下拉菜单
- Intellij IDEA 的使用(创建项目、导入项目、同时部署多个项目、JRebel)等常见eclipse、myeclipse换idea必看
- HIbernate小结
- fzu 2105 Digits Count ( 线段树 ) from 第三届福建省大学生程序设计竞赛
- Android集成Mina NIO Socket
- Mining 影响数据挖掘结果的 5 方面
- LINQ 图解
- springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来
- tensorflow--交叉熵
- ionic3 对android包进行签名
- Java连接访问Oracle--Connection.setSavepoint()方法使用
- WPF App.xaml.cs常用模板,包括:异常捕获,App只能启动一次
- Django商城项目笔记No.9用户部分-注册接口签发JWTtoken
- Java并发编程笔记—摘抄—基础知识
- Spring MVC 处理模型数据
- 实现KbmMw web server 支持https