判断某棵二叉树是否二叉排序树
这是我首先想到的算法:
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)
判断某棵二叉树是否二叉排序树相关推荐
- python代码判断两棵二叉树是否相同
python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...
- 牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案
牛客题霸 [ 判断一棵二叉树是否为搜索二叉树和完全二叉树] C++题解/答案 题解: 搜索二叉树满足以下性质: 1.非空左子树的所以键值小于其根节点的键值 2.非空右子树的所有键值大于其根节点的键值 ...
- 判断一棵二叉树是否为完全二叉树-Java
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...
- Python算法——判断两棵二叉树是否相等
要求: 如何判断两颗树是否相等?(两棵树相等是指这两课树有着相同的结构,并且在相同位置上的结点有相同的值) 分析: 如果两颗二叉树root1, root2相等, 那么root1和root2结点的值相同 ...
- 【面试】判断一棵二叉树是否为二叉排序树
一.描述 给定一棵二叉树,如何判断一棵树是否是二叉排序树.给出树结点定义如下 class TreeNode {int key;TreeNode left;TreeNode right;public T ...
- 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树 public static class Node{public int valu ...
- 判断一棵二叉树是否为平衡二叉树
1.先给出树节点信息 typedef struct tree{struct tree *lchild;struct tree *rchlid;int data; }tree,* Bitree; 2.原 ...
- 判断两棵二叉树是否同构,三种实现方式(递归、队列、堆栈)
一.同构的概念: 给定两棵二叉树 T1 和 T2,如果T2可以通过若干次左右孩子互换就变成T1,那么我们称这两棵树是同构的 例1:下图两棵树同构,因为对T2,交换A左右孩子:交换B左右孩子,交换G左右 ...
- 如何判断一棵二叉树是完全二叉树(1)
完全二叉树的定义: 一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边. 一个直观的想法, 就是观察一棵完全二叉树,来分析它到底有什么特征. 方法1: 按层遍历二叉树, 从每层 ...
最新文章
- 【AWS 安全系列】Amazon S3 配置错误(下)
- 图解Win7下PowerShell初步使用
- 内存管理:_CrtDumpMemoryLeaks和_CrtSetBreakAlloc
- TensorFlow学习笔记(十)tf搭建神经网络可视化结果
- MySql字符串函数使用技巧
- Exchange2010之典型安装
- 取表单radio值时
- python-两种办法验证数据的类型
- C++编译原理 (转载)
- python 笔记数据类型
- 管理感悟:给自己编程水平打分
- [译]Vue 2.0的变化(一)之基本API变化
- mysql 事务不生效_@Transactional事务不生效的几种解决方案
- 系统集成项目管理工程师成绩合格标准
- 基于VGG19的图片分割网络
- VBA 贴片电阻名称转换
- 根据区的code获取省市的code代码,下面有切割数字方法
- 焱融全闪存储轻松构建百亿私募量化投研平台
- 正版七日杀服务器存档,如何在网吧保存steam七日杀存档 | 手游网游页游攻略大全...
- 互质 整除 同余
热门文章
- 九十、动态规划系列背包问题之多重背包
- java normalize_java – XPath normalize-space()返回一系列规范化字符串
- 如何配置mysql8.0_安装和配置Mysql8.0
- linux mysql 指令无效_linux下安装mysql,mysql命令失效的原因
- 前端生成Excel 表格
- ICCV 2019 | 从多视角RGB图像生成三维网格模型Pixel2Mesh++
- 2021蓝桥直播课-软件类-本科组
- 2018年EC Final 校内选拔赛【解题报告】
- SwinTransformer代码中出现的代码知识的学习
- python哨兵循环_Python中的Sentinel(哨兵)值