检查一棵二叉树是否为二叉查找树
来源:互联网 发布:神奇软件 编辑:程序博客网 时间:2024/05/29 12:24
题目:实现一个函数,检查一棵二叉树是否为二叉查找树。
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;
}
- 检查一棵二叉树是否为二叉查找树
- 检查一颗二叉树是否是二叉查找树
- 面试21之检查一颗二叉树是否为二叉查找树
- 二叉查找树(5) - 判断一棵二叉树是否为BST
- 二叉树---检查是否为BST
- 判断一棵二叉树是否为完全二叉树
- 测试一棵二叉树是否为完全二叉树
- 判断一棵二叉树是否为完全二叉树
- 判断一棵二叉树是否为平衡二叉树
- 判断一棵二叉树是否为完全二叉树
- 程序员面试金典: 9.4树与图 4.5实现一个函数,检查一颗二叉树是否为二叉查找树
- 判断一颗树是否为二叉查找树
- 检查二叉树是否平衡
- 判断一棵二叉查找树是否是平衡树
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否为对称二叉树
- 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
- 关于win7 下delphi7出现重新注册,无法打开的故障解决办法
- sqlite3使用示例
- poj1611 并查集 找感染者
- 13Roman to Integer
- Python中字符串
- 检查一棵二叉树是否为二叉查找树
- Git服务器搭建+上传代码
- ssoj2386数字8
- java中string与json互相转化
- [UVA 10054]The Necklace[欧拉回路][打印路径]
- 自适应网页设计
- 基于MFC编程中,当创建了一个对话框后,但是当按下ESC或者是回车健的时候,这个对话框就会消失
- c++与Tcl通过管道通信,并传递参数,获取测试仪实时测试进度
- objc的单例模式(ARC环境下)