二叉树——判断一棵树是否是搜索二叉树

中序遍历是升序即可

使用二叉树遍历的非递归版本更方便判断

采用二叉树的中序遍历的非递归版本,在其中打印的位置用比较大小代替即可

public class IsBSTTree {
    public static boolean isBSTTree(Tree tree){
        if(tree == null) return true;

        Stack<Tree> stack = new Stack<>();
        int preNode = Integer.MIN_VALUE;

        while(!stack.empty() || tree != null){
            if(tree != null){
                stack.push(tree);
                tree = tree.left;
            }else{
                tree = stack.pop();
                if(preNode > tree.val){
                    return false;
                }
                preNode = tree.val;
                tree = tree.right;
            }
        }
        return true;
    }
}

  

posted @ 2018-04-25 21:55  SkyeAngel  阅读(976)  评论(0编辑  收藏  举报