这是我首先想到的算法:

bool Judge(PBinTree pbt)
{PBinTreeNode   pLeft, pRight;bool    bLeft = false, bRight=false, bRootl=false, bRootr=false;if(pbt == NULL)return true;// 判断根节点pLeft = pbt->left;pRight = pbt->right;if(pLeft && pLeft->data <= pbt->data){bRootl = true;}else{return false;}if(pRight && pRight->data >= pbt->data){bRootr = true;}else{return false;}// 判断左右子树bLeft = Judge(pLeft);bRight = Judge(pRight);// 同时满足条件才叫二叉排序树return( bLeft && bRight && bRootl && bRootr);
}

但是不能处理

400
  200     600
100 900 500 700

这样的情况

应该是这样的算法

typedef   struct   node{ int   data; struct   node   *left,   *right;
}NODE; int   judge(NODE   *p,   int   leftbound,   int   rightbound)   { if   (p==NULL)   return   1; if   (p-> data   <   leftbound   ||   p-> data   >   rightbound)   return   0;//不要等号 if   (!judge(p-> left,leftbound,p-> data))   return   0; if   (!judge(p-> right,   p-> data,rightbound))   return   0; return   1;
}

根值为value,   则左子树值都小于根,   右子树值大于根.   即左子树值   (-maxint,   value)   范围内,   右子树值在(value,   maxint)范围内.

调用为 judge(root,-maxint,maxint)

判断某棵二叉树是否二叉排序树相关推荐

  1. python代码判断两棵二叉树是否相同

    python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...

  2. 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案

    牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...

  3. 判断一棵二叉树是否为完全二叉树-Java

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...

  4. Python算法——判断两棵二叉树是否相等

    要求: 如何判断两颗树是否相等?(两棵树相等是指这两课树有着相同的结构,并且在相同位置上的结点有相同的值) 分析: 如果两颗二叉树root1, root2相等, 那么root1和root2结点的值相同 ...

  5. 【面试】判断一棵二叉树是否为二叉排序树

    一.描述 给定一棵二叉树,如何判断一棵树是否是二叉排序树.给出树结点定义如下 class TreeNode {int key;TreeNode left;TreeNode right;public T ...

  6. 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)

    平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树 public static class Node{public int valu ...

  7. 判断一棵二叉树是否为平衡二叉树

    1.先给出树节点信息 typedef struct tree{struct tree *lchild;struct tree *rchlid;int data; }tree,* Bitree; 2.原 ...

  8. 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)

    一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...

  9. 如何判断一棵二叉树是完全二叉树(1)

    完全二叉树的定义: 一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边. 一个直观的想法, 就是观察一棵完全二叉树,来分析它到底有什么特征. 方法1: 按层遍历二叉树, 从每层 ...

最新文章

  1. 【AWS 安全系列】Amazon S3 配置错误(下)
  2. 图解Win7下PowerShell初步使用
  3. 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
  4. TensorFlow学习笔记(十)tf搭建神经网络可视化结果
  5. MySql字符串函数使用技巧
  6. Exchange2010之典型安装
  7. 取表单radio值时
  8. python-两种办法验证数据的类型
  9. C++编译原理 (转载)
  10. python 笔记数据类型
  11. 管理感悟:给自己编程水平打分
  12. [译]Vue 2.0的变化(一)之基本API变化
  13. mysql 事务不生效_@Transactional事务不生效的几种解决方案
  14. 系统集成项目管理工程师成绩合格标准
  15. 基于VGG19的图片分割网络
  16. VBA 贴片电阻名称转换
  17. 根据区的code获取省市的code代码,下面有切割数字方法
  18. 焱融全闪存储轻松构建百亿私募量化投研平台
  19. 正版七日杀服务器存档,如何在网吧保存steam七日杀存档 | 手游网游页游攻略大全...
  20. 互质 整除 同余

热门文章

  1. 九十、动态规划系列背包问题之多重背包
  2. java normalize_java – XPath normalize-space()返回一系列规范化字符串
  3. 如何配置mysql8.0_安装和配置Mysql8.0
  4. linux mysql 指令无效_linux下安装mysql,mysql命令失效的原因
  5. 前端生成Excel 表格
  6. ICCV 2019 | 从多视角RGB图像生成三维网格模型Pixel2Mesh++
  7. 2021蓝桥直播课-软件类-本科组
  8. 2018年EC Final 校内选拔赛【解题报告】
  9. SwinTransformer代码中出现的代码知识的学习
  10. python哨兵循环_Python中的Sentinel(哨兵)值