import java.util.Stack;
public class IsBSTree {
static class Node{
int value;
Node left;
Node right;
public Node(int data) {
value = data;
}
}
public static boolean isBSTree(Node head) {
Stack<Node> stack = new Stack<Node>();
int data = Integer.MIN_VALUE;
if(head == null) {
return true;
}
while(!stack.isEmpty() || head != null) {
if(head != null) {
stack.push(head);
head = head.left;
}else {
head = stack.pop();
if(data > head.value)
return false;
data = head.value;
head = head.right;
}
}
return true;
}
public static void main(String[] args) {
Node head = null;
System.out.println(isBSTree(head));
head = new Node(1);
System.out.println(isBSTree(head));
head = new Node(15);
head.left = new Node(13);
head.right = new Node(18);
head.left.left = new Node(12);
head.left.left.left = new Node(5);
System.out.println(isBSTree(head));
head = new Node(1);
head.left = new Node(2);
head.right = new Node(3);
head.left.left = new Node(4);
head.left.left.left = new Node(5);
System.out.println(isBSTree(head));
head = new Node(1);
head.left = new Node(2);
head.right = new Node(3);
head.left.left = new Node(4);
head.left.right = new Node(6);
System.out.println(isBSTree(head));
head = new Node(100);
head.left = new Node(21);
head.left.left = new Node(37);
head.right = new Node(-42);
head.right.left = new Node(0);
head.right.right = new Node(666);
head.right.right.right = new Node(343432);
head.right.right.right.right = new Node(4343434);
System.out.println(isBSTree(head));
}
}
判断一颗二叉树是不是二叉搜索树
最新推荐文章于 2024-07-23 20:29:08 发布