您的位置:首页 > 其它

检查是否为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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: