检查是否为BST
2016-05-16 08:51
295 查看
题目描述
请实现一个函数,检查一棵二叉树是否为二叉查找树。给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树
代码如下:
package com.mianshi;
import java.util.Stack;
public class jingdian_21 {
static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public static void main(String[] args) {
TreeNode l1=new TreeNode(4);
TreeNode l2=new TreeNode(2);
TreeNode l3=new TreeNode(6);
TreeNode l4=new TreeNode(1);
TreeNode l5=new TreeNode(3);
TreeNode l6=new TreeNode(5);
TreeNode l7=new TreeNode(7);
l1.left=l2;
l1.right=l3;
l2.left=l4;
l2.right=l5;
l3.left=l6;
l3.right=l7;
System.out.print(jingdian_21.isValidBST(l1));
}
public static boolean isValidBST(TreeNode root) {
if(root==null) return true;
Stack<TreeNode> stack =new Stack<TreeNode>();
int pre=0;
TreeNode p=root;
boolean isFirst=true;
while(p!=null || !stack.isEmpty()){
while(p!=null){
stack.push(p);
p=p.left;
}
p=stack.pop();
if(isFirst){
pre=p.val;
isFirst=false;
}else if(pre>p.val){
return false;
}else{
pre=p.val;
}
p=p.right;
}
return true;
}
}
相关文章推荐
- EasyCharts,简单易用的Excel图表插件
- 一个Filter配置多个url-pattern
- ppt怎么设置结束时播放音乐
- 开发IOS推送功能客户端需要做的事情
- APNS发消息的原理
- HDU 4709 Herding(求三角形面积)
- 用Thinkphp实现表的添加修改和删除
- 浅谈Python 中整型对象的存储问题
- 在字符串中找出连续最长的数字串
- 阅读程序,写出执行结果2
- 网络爬虫基本原理
- 深入剖析z-index属性
- Struts2中使用Session的两种方法
- iOS开发之沙盒机制
- asp.net4.5尚未在web服务器上注册 解决方案
- 线程同步实现
- 1016 of dp
- 最新Eclipse TomCat 进行JRebel热部署插件安装、破解及配置
- elasticsearch 八、重要的配置更改
- scanf后面跟一个getchar