描述
设计一个算法,判断一颗二叉树是否是搜索二叉树。
分析
一颗搜索二叉树,任何子树的左儿子一定小于根,右儿子一定大于根。由于这个特性,搜索二叉树的中序遍历一定是升序的。反之,如果一颗二叉树的中序遍历是升序的,那么它一定是搜索二叉树。故而,判断一颗二叉树的中序遍历是否升序,就可以判断这棵二叉树是否是搜索二叉树。
代码
class IsSearchBinaryTree {
public static boolean isSearchBinaryTree(Node root) {
if (root == null) // 空树直接返回 false
return false;
Stack<Node> stack = new Stack<>();
Node cur = root; // 当前节点是根节点
int pre = Integer.MIN_VALUE; // pre 用来记录上一个节点的值
while (!stack.