//判断是否为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);
}
}

[二叉树算法]关于判断是否为BST的算法的更多相关文章

  1. 算法——dfs 判断是否为BST

    95. 验证二叉查找树 中文English 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值. 节点的右子树中的值要严格大于该节点的值 ...

  2. C#算法之判断一个字符串是否是对称字符串

    记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串.我当时用了几分钟写了一个很简单的代码. 这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abb ...

  3. Atitti 文本分类  以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案

    Atitti 文本分类  以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案 1.1. 七.什么是贝叶斯过滤器?1 1.2. 八.建立历史资料库2 1.3. 十.联合概率的计算3 1.4. 十一. ...

  4. 判断是否为BST

    递归的方法,用返回false的方法.中序遍历的想法很好,空间浪费.遍历的过程记录上一次的值进行比较. //题目描述 // //请实现一个函数,检查一棵二叉树是否为二叉查找树. //给定树的根结点指针T ...

  5. 判断点在多边形内算法的C++实现

    目录 1. 算法思路 2. 具体实现 3. 改进空间 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况.该算法的思路很简单,就是从目标 ...

  6. 判断Java对象存活的算法、垃圾回收算法

    判断Java对象存活的算法 一.引用计数算法 给对象添加一个引用计数器,每当一个地方引用它的时候就将计数器加1,当引用失效的时候就将计数器减1,任何时刻计数器为0的对象都不可再被使用.这种算法虽然简单 ...

  7. Java实现 蓝桥杯 算法提高 判断名次

    算法提高 判断名次 时间限制:1.0s 内存限制:256.0MB 问题描述 某场比赛过后,你想要知道A~E五个人的排名是什么,于是要求他们每个人说了一句话.(经典的开头---_-!)得了第1名的人23 ...

  8. HDOJ-3416(最大流+最短路+ISAP算法+向前星dijikstra算法+如何判断一条边是否在最短路中)

    Marriage Match IV HDOJ-3416 这题的题意就是要找两点之间最短路的路径个数,而且边不能重复. 最大流和最短路的结合.首先正向和反向建图,再跑两遍dijikstra.到这里就求出 ...

  9. 70 数组的Kmin算法和二叉搜索树的Kmin算法对比

    [本文链接] http://www.cnblogs.com/hellogiser/p/kmin-of-array-vs-kmin-of-bst.html [分析] 数组的Kmin算法和二叉搜索树的Km ...

随机推荐

  1. Visual Studio、.NET Framework、VC++、C#各个版本的对应关系

    Visual Studio..NET Framework.VC++.C#各个版本的对应关系 Visual Studio版本 .NET Framework版本 内部版本 VC++版本 C#版本 Visu ...

  2. 封装qt http文件下载类

    #include <QApplication> #include <QtWidgets> #include <QtNetwork> //downloads one ...

  3. keepalived非争抢机制不生效【原创】

    故障现象:俩台服务器设置了keepalived非争抢机制,但是发现优先级高的服务器还是会优先获取vip 利用tcpdump抓包发现只有其中一台服务器,没有另一台 tcpdump -i eth0 vrr ...

  4. 【idea】idea远程调试代码

    一.前置条件 1.idea的代码和远程服务器代码保持一致 二.远程服务器配置 服务启动时,需要给jvm添加指定参数,进行启动 -agentlib:jdwp=transport=dt_socket,se ...

  5. Problems with Localtime

    http://pytz.sourceforge.net/#problems-with-localtime https://docs.djangoproject.com/en/2.2/topics/i1 ...

  6. 在input内添加小图标或文字(元/月)等

    文字: <td class="formValue"> <div class="input-group"> <input id=&q ...

  7. flutte的第一个hello world程序

    用命令行创建项目: flutter create flutterdemo VSCode或者AS连接手机后 输入 flutter run 编译后就可以将默认的代码显示在手机上了 开始写hello wor ...

  8. 【转】Python读取PDF文档,输出内容

    Python3读取pdf文档,输出内容(txt) from urllib.request import urlopen from pdfminer.pdfinterp import PDFResour ...

  9. Laya发布微信小游戏项目

    版本2.1.1.1 创建项目时,勾选微信/百度小游戏bin目录快速调试 发布项目时,选择发布平台为微信小游戏 用微信开发者工具打开release/wxgame,这就是微信小游戏项目了,很方便

  10. matlab基本数据结构struct

    一起来学演化计算-matlab基本数据结构struct 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 http://blog.sina.com.cn/s/blog_46865140 ...