[二叉树算法]关于判断是否为BST的算法
//判断是否为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的算法的更多相关文章
- 算法——dfs 判断是否为BST
		
95. 验证二叉查找树 中文English 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值. 节点的右子树中的值要严格大于该节点的值 ...
 - C#算法之判断一个字符串是否是对称字符串
		
记得曾经一次面试时,面试官给我电脑,让我现场写个算法,判断一个字符串是不是对称字符串.我当时用了几分钟写了一个很简单的代码. 这里说的对称字符串是指字符串的左边和右边字符顺序相反,如"abb ...
 - Atitti 文本分类  以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案
		
Atitti 文本分类 以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案 1.1. 七.什么是贝叶斯过滤器?1 1.2. 八.建立历史资料库2 1.3. 十.联合概率的计算3 1.4. 十一. ...
 - 判断是否为BST
		
递归的方法,用返回false的方法.中序遍历的想法很好,空间浪费.遍历的过程记录上一次的值进行比较. //题目描述 // //请实现一个函数,检查一棵二叉树是否为二叉查找树. //给定树的根结点指针T ...
 - 判断点在多边形内算法的C++实现
		
目录 1. 算法思路 2. 具体实现 3. 改进空间 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况.该算法的思路很简单,就是从目标 ...
 - 判断Java对象存活的算法、垃圾回收算法
		
判断Java对象存活的算法 一.引用计数算法 给对象添加一个引用计数器,每当一个地方引用它的时候就将计数器加1,当引用失效的时候就将计数器减1,任何时刻计数器为0的对象都不可再被使用.这种算法虽然简单 ...
 - Java实现 蓝桥杯 算法提高 判断名次
		
算法提高 判断名次 时间限制:1.0s 内存限制:256.0MB 问题描述 某场比赛过后,你想要知道A~E五个人的排名是什么,于是要求他们每个人说了一句话.(经典的开头---_-!)得了第1名的人23 ...
 - HDOJ-3416(最大流+最短路+ISAP算法+向前星dijikstra算法+如何判断一条边是否在最短路中)
		
Marriage Match IV HDOJ-3416 这题的题意就是要找两点之间最短路的路径个数,而且边不能重复. 最大流和最短路的结合.首先正向和反向建图,再跑两遍dijikstra.到这里就求出 ...
 - 70 数组的Kmin算法和二叉搜索树的Kmin算法对比
		
[本文链接] http://www.cnblogs.com/hellogiser/p/kmin-of-array-vs-kmin-of-bst.html [分析] 数组的Kmin算法和二叉搜索树的Km ...
 
随机推荐
- 在Kaggle免费使用GPU训练自己的神经网络
			
Kaggle上有免费供大家使用的GPU计算资源,本文教你如何使用它来训练自己的神经网络. Kaggle是什么 Kaggle是一个数据建模和数据分析竞赛平台.企业和研究者可在其上发布数据,统计学者和数据 ...
 - 树莓派VNC
			
sudo raspi-config Interfacing Options -> VNC 1.停止VNC窗口: vncserver -kill:1 2.修改密码 vncpasswd 3.重启服务 ...
 - Amazon aws s3 加速
			
aws s3加速 - 工长山的专栏 - CSDN博客https://blog.csdn.net/xuanwu_yan/article/details/79160034 [实测有效]“解决国内访问s3. ...
 - Docker Rootless Container
			
容器安全拾遗 - Rootless Container初探-云栖社区-阿里云https://yq.aliyun.com/articles/700923 medium.comhttps://medium ...
 - Flutter利用GridView实现网格的商品布局
			
GridView.count 生成的是静态网格 效果: 代码: import 'package:flutter/material.dart'; void main() { runApp(MyApp() ...
 - netty5心跳与业务消息分发实例
			
继续基于我们之前的例子(参见netty5自定义私有协议实例),这次我们加上连接校验和心跳机制: 只要校验通过,客户端发送心跳和业务消息是两个不同的事件发送的,彼此互不干扰.针对以上流程,我们需要增加4 ...
 - DataWorks2.0——DataStudio简单对比使用上手
			
1.原先的数据管理去哪里了? 悬停在此图标上即可: 2.项目模式有何不同?
 - 算法习题---5-1代码对齐(UVa1593)
			
一:题目 将不规范的若干行代码进行对齐.对齐按照最长字符串进行操作.见样例输入 (一)样例输入 ␣␣start:␣␣integer;␣␣␣␣//␣begins␣here stop:␣integer;␣ ...
 - 【Java】阿里巴巴Java开发手册
			
阿里巴巴Java开发手册 下载地址:https://github.com/alibaba/p3c 阿里巴巴代码规范检查插件p3c 下载地址:https://github.com/alibaba/p3c
 - 【php】PHP制作QQ微信支付宝三合一收款码
			
分析 微信扫这个,支付宝扫那个,不仅要加载多张二维码,还要加css/js让它变的好看,作为一个又懒又不想写这些东西的程序猿来说,这可不行. 那能不能把QQ微信支付宝三合一,只需要扫一个收款码就行呢? ...