@Override public boolean contains(Object o) { T element = (T) o; Node<T> x = root; int cmp; while (x != null && (cmp = element.compareTo(x.key)) != 0) { if (cmp < 0) { x = x.left; } else { x = x.right; } } return x != null; }编写测试类
时间: 2023-09-10 16:05:08 浏览: 43
好的,以下是一个简单的测试类,可以测试上述二叉搜索树的 `contains` 方法是否正确。
```java
public class BSTTest {
public static void main(String[] args) {
BST<Integer> bst = new BST<>();
bst.insert(5);
bst.insert(3);
bst.insert(7);
bst.insert(2);
bst.insert(4);
bst.insert(6);
bst.insert(8);
System.out.println(bst.contains(3)); // true
System.out.println(bst.contains(9)); // false
}
}
```
其中 `BST` 是二叉搜索树的实现类,我们可以在测试类中构建一个 `BST` 对象并插入一些元素,然后测试 `contains` 方法的正确性。在上述测试中,我们插入了 7 个元素,然后分别测试了一个存在于树中的元素 3 和一个不存在于树中的元素 9,输出应该分别为 true 和 false。
相关问题
@Override public boolean contains(Object o) { T element = (T) o; Node<T> x = root; int cmp; while (x != null && (cmp = element.compareTo(x.key)) != 0) { if (cmp < 0) { x = x.left; } else { x = x.right; } } return x != null; }
好的,以下是一个可能的测试类,可以用于测试上面的代码:
```
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class BinaryTreeContainsTest {
private Node<Integer> root;
@Before
public void setUp() throws Exception {
// 构造一棵二叉查找树
root = new Node<>(5);
root.left = new Node<>(3);
root.left.left = new Node<>(1);
root.left.right = new Node<>(4);
root.right = new Node<>(7);
root.right.left = new Node<>(6);
root.right.right = new Node<>(9);
}
@Test
public void testContains() {
assertTrue(contains(5));
assertTrue(contains(3));
assertTrue(contains(1));
assertTrue(contains(7));
assertTrue(contains(9));
assertFalse(contains(0));
assertFalse(contains(2));
assertFalse(contains(8));
}
private boolean contains(Integer element) {
Node<Integer> x = root;
int cmp;
while (x != null && (cmp = element.compareTo(x.key)) != 0) {
if (cmp < 0) {
x = x.left;
} else {
x = x.right;
}
}
return x != null;
}
}
```
这个测试类中,我们首先构造了一棵二叉查找树,然后使用 `contains()` 方法来判断树中是否包含某个元素,最后使用 JUnit 的断言方法 `assertTrue()` 和 `assertFalse()` 来判断判断结果是否正确。如果测试通过,那么说明上面的代码实现是正确的。
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
这是一个Java Web开发中的拦截器方法,用于在请求到达controller之前进行拦截处理。其中,HttpServletRequest代表HTTP请求,HttpServletResponse代表HTTP响应,Object handler代表请求的处理器。该方法返回一个boolean值,表示请求是否继续向下执行。如果返回true,请求继续向下执行;如果返回false,请求被拦截。