@Test public void ceil() { for (int i = 0; i < N; i++) { Assert.assertEquals(expect.ceiling(i), bst.ceil(i)); } }
public Key ceil(Key key) { if (key == null) throw new IllegalArgumentException("key not null"); Node tar = ceil(root, key); return tar == null ? null : tar.key; }
BST { public Key ceil(Key key) { if (key == null) throw new IllegalArgumentException("key not null"); Node tar = ceil(root, key); return tar == null ? null : tar.key; } }
BST { public Key ceil(Key key) { if (key == null) throw new IllegalArgumentException("key not null"); Node tar = ceil(root, key); return tar == null ? null : tar.key; }  }
BST { public Key ceil(Key key) { if (key == null) throw new IllegalArgumentException("key not null"); Node tar = ceil(root, key); return tar == null ? null : tar.key; }  int size(); boolean isEmpty(); boolean contains(Key key); Val find(Key key); void put(Key key, Val val); boolean remove(Key key); Key select(int rank); int rank(Key key); Key floor(Key key); Key ceil(Key key); }
BST { public Key ceil(Key key) { if (key == null) throw new IllegalArgumentException("key not null"); Node tar = ceil(root, key); return tar == null ? null : tar.key; }  int size(); boolean isEmpty(); boolean contains(Key key); Val find(Key key); void put(Key key, Val val); boolean remove(Key key); Key select(int rank); int rank(Key key); Key floor(Key key); Key ceil(Key key);  }