判断一颗二叉树是否为二叉排序树(java实现)

来源:互联网 发布:windows安装服务 编辑:程序博客网 时间:2024/06/05 08:49

@Test

    public void test() {
        Obj root = new Obj();
        root.setData(5);
        Obj left = new Obj();
        root.setLeft(left);
        left.setData(3);
        Obj ll = new Obj();
        Obj lr = new Obj();
        left.setLeft(ll);
        left.setRight(lr);
        ll.setData(-1);
        lr.setData(4);


        Obj pre = null;
        Boolean res = isBiSortTree(root);
        System.out.print("res:" + res);

    }

  //中序遍历二叉树

   public boolean isBiSortTree(Obj root) {
        if (root == null) {
            return true;
        }
        Stack s = new Stack();
        Obj p = root;
        Obj pre = null;
        while (p != null || !s.isEmpty()) {
            if (p != null) {
                s.push(p);
                p = p.left;
            } else {
                p = (Obj) s.pop();
                if (pre != null && p.getData() <= pre.getData()) {
                    return false;
                }
                pre = p;
                p = p.right;
            }
        }
        return true;
    }

0 0
原创粉丝点击