diff --git a/lab2/src/main/java/ru/spbstu/telematics/java/MyTreeSet.java b/lab2/src/main/java/ru/spbstu/telematics/java/MyTreeSet.java index 0996d6d..e4dbd64 100644 --- a/lab2/src/main/java/ru/spbstu/telematics/java/MyTreeSet.java +++ b/lab2/src/main/java/ru/spbstu/telematics/java/MyTreeSet.java @@ -49,4 +49,20 @@ public class MyTreeSet> { return true; } + + public boolean contains(E element) { + if (element == null) { + throw new NullPointerException("Нельзя добавить null в TreeSet!"); + } + + return contains(root, element); + } + + private boolean contains(Node node, E element) { + if (node == null) return false; + + int cmp = element.compareTo(node.value); + if (cmp == 0) return true; + return cmp < 0 ? contains(node.left, element) : contains(node.right, element); + } } diff --git a/lab2/src/test/java/ru/spbstu/telematics/java/AppTest.java b/lab2/src/test/java/ru/spbstu/telematics/java/AppTest.java index 1d02c41..b3c7be3 100644 --- a/lab2/src/test/java/ru/spbstu/telematics/java/AppTest.java +++ b/lab2/src/test/java/ru/spbstu/telematics/java/AppTest.java @@ -28,4 +28,19 @@ class MyTreeSetTests { assertThrows(NullPointerException.class, () -> myTreeSet.add(null)); assertThrows(NullPointerException.class, () -> treeSet.add(null)); } + + @Test + void testContains() { + assertEquals(myTreeSet.contains(15), treeSet.contains(15)); + treeSet.add(15); + myTreeSet.add(15); + assertEquals(myTreeSet.contains(15), treeSet.contains(15)); + assertEquals(myTreeSet.contains(50), treeSet.contains(50)); + treeSet.add(50); + myTreeSet.add(50); + assertEquals(myTreeSet.contains(50), treeSet.contains(50)); + + assertThrows(NullPointerException.class, () -> myTreeSet.contains(null)); + assertThrows(NullPointerException.class, () -> treeSet.contains(null)); + } }