检查一棵二叉树是否为二叉查找树
2019独角兽企业重金招聘Python工程师标准>>>
public static int index=0;
public static copyBST(TreeNode root,int [] array)
{
if(root== null) return ;
copyBST(root.left,array);
array[index]=root.data;
index++;
copyBST(root.right,array);
}
public static boolean checkBST(TreeNode root)
{
int [] array=new int[root.size];
copyBST(root,array);
for(int i=1;i<array.length;i++)
{
if(array[i]<=array[i-1]) return false;
}
return true;
}
public static int last_printed=Integer.MIN_VALUE;
public static boolean checkBST(TreeNode n)
{
if(n==null) return true;
//递归检查左子树
if(!checkBST(n.left)) return false;
//检查当前结点
if(n.data<=last_printed) return false;
last_printed=n.data;
//递归检查右子树
if(!checkBST(n.right)) return false;
return true;//全部检查完毕
}
解法二:最小/最大法
boolean checkBST(TreeNode n)
{
return checkBST(n,Integer.MIN_VALUE,Integer.MAX_VALUE);
}
boolean checkBST(TreeNode n,int min,int max)
{
if(n==null)
return true;
if(n.data<min||n.data>max)
return false;
if(!checkBST(n.left,min,n.data)||!checkBST(n.right,n.data,max));
{
return false;
}
return true;
}
转载于:https://my.oschina.net/u/2822116/blog/790200
检查一棵二叉树是否为二叉查找树相关推荐
- 表达式类型( 一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现 基于二叉树表示的算术表达式Expression的操作)
文章目录 题目描述 黑框运行的代码 黑框代码下载链接 QT完成页面的代码下载链接 题目描述 一个表达式和一棵二叉树之间,存在着自然的对应关系.写一个程序,实现 基于二叉树表示的算术表达式Express ...
- 【二叉树】大学有棵树叫高数,数据结构也有棵二叉树-代码详解
文章目录 二叉树 二叉树结构 快速构建一颗二叉树 前序遍历 中序遍历 后序遍历 层序遍历 注意点 计算二叉树结点个数 求叶子结点个数 求第K层结点个数 求二叉树的深度 查找值为x的结点 关于二叉树递归 ...
- 前人栽树,后人乘凉,这棵二叉树早已枝繁叶茂,快来感受树荫下的清凉吧!!
目录 二叉树的性质 求节点的个数 求叶子节点的个数 求第K层节点的个数 获取二叉树的高度 查找节点 检查两棵树是否相同 判断一颗树是否是另一棵树的子树 二叉树的性质 1.若规定根节点层数为1,一棵非空 ...
- 二叉树学习之二叉查找树 http://blog.csdn.net/callinglove/article/details/40707449
二叉树学习之二叉查找树 标签: 二叉树二叉树图形化二叉查找树二叉树递归遍历 2014-11-02 10:49 1441人阅读 评论(0) 收藏 举报 分类: ACM&算法(8) ...
- 二叉树(BT)、二叉查找树(BST)、平衡二叉树(AVL)、B-Tree、B+Tree、红黑树(BRT)
目录 树的概念 树的分类 二叉树 二叉查找树 平衡二叉树(AVL) B-Tree(平衡多路查找树) B树的关键特征 B+Tree B+树关键特征 红黑树(BRT) 左旋 右旋 时间复杂度 树形结构是一 ...
- python代码判断两棵二叉树是否相同
python代码判断两棵二叉树是否相同 给定两个二叉树,编写一个函数来校验它们是否相同.如果两个树在结构上相同,并且结点具有相同的值,则认为它们是相同的. 判断两个二叉树是否是相同的,相同的依据是 二 ...
- 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)
手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...
- 已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法...
已知一棵二叉树的中序序列和后序序列,写一个建立该二叉树的二叉链表存储结构的算法 #define N 10 //二叉树节点的个数 char postorderstr[]={};//后序序列 char i ...
- 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
平衡二叉树的解法:主要是求出二叉树的高度,若根节点的左子树的高度与右子树的高度差小于等于1,则表示该二叉树为平衡二叉树 public static class Node{public int valu ...
最新文章
- R和Python谁更好?这次让你「鱼与熊掌」兼得
- java语法基础(总结)
- mongodb 开启身份认证_Yum安装mongodb及开启用户认证远程登录
- 101.编译是如何把一个机器的语言拿到另一台机器语言机器上执行的?
- 机器学习规则 (Rules of Machine Learning): 关于机器学习工程的最佳实践
- python 多进程 multiprocessing 进程池pool报错 in join assert self._state in (CLOSE, TERMINATE) AssertionError
- 在服务器上安装vasp如何得到输出文件,云服务器安装vasp
- windows中启动 java -jar 后台运行程序
- CXF(2.7.10) - RESTful Services, JSON Support
- mongo(删除操作)
- 李沐动手学深度学习d2l
- 软件设计模式、目标、原则
- dp动态规划分类详解
- TCP/IP协议簇中三个常见的传输层协议
- C# for循环99乘法表
- 0LL或0x0UL是什么意思?
- 鸿蒙初开 原文,《鸿蒙初开,天地混沌》 译文
- 时光金科php_重庆金科博翠宸章 | ACA麦垦景观
- VB.net 移动文件夹去另一个地址,删除文件夹里某种类型的文件
- 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
热门文章
- 编程小白的第一本python入门书-编程小白的第一本 Python 入门书
- python编写一个软件-如何用Python写一个计算器软件 附带效果图
- 方差、标准差、均方差、均方误差理解
- LeetCode686 Repeated String Match(字符串匹配)
- LeetCode Range Sum Query - Mutable(树状数组、线段树)
- 【前端统计图】echarts实现属性修改
- 【helloworld】-微信小程序开发教程-入门篇【1】
- Python之Pandas库学习(一):简介
- 面下个对象 多态特性
- 回到顶部和返回首页jquery插件