Skip to content

Commit d70191e

Browse files
committed
RedBlackTrees search()
1 parent 10ef274 commit d70191e

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

pydatastructs/trees/_backend/cpp/RedBlackTree.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,10 +574,15 @@ static PyObject* RedBlackTree_delete(RedBlackTree* self, PyObject *args, PyObjec
574574
Py_RETURN_NONE;
575575
}
576576

577+
static PyObject* RedBlackTree_search(RedBlackTree* self, PyObject *args, PyObject *kwds) {
578+
return BinarySearchTree_search(self->sbbt->bst, args, kwds);
579+
}
580+
577581

578582
static struct PyMethodDef RedBlackTree_PyMethodDef[] = {
579583
{"insert", (PyCFunction) RedBlackTree_insert, METH_VARARGS, NULL},
580584
{"delete", (PyCFunction) RedBlackTree_delete, METH_VARARGS | METH_KEYWORDS, NULL},
585+
{"search", (PyCFunction) RedBlackTree_search, METH_VARARGS | METH_KEYWORDS, NULL},
581586
{"lower_bound", (PyCFunction) RedBlackTree_lower_bound, METH_VARARGS | METH_KEYWORDS, NULL},
582587
{"upper_bound", (PyCFunction) RedBlackTree_upper_bound, METH_VARARGS | METH_KEYWORDS, NULL},
583588
{"_get_parent", (PyCFunction) RedBlackTree__get_parent, METH_VARARGS, NULL},

pydatastructs/trees/tests/test_binary_trees.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,9 +700,15 @@ def _test_RedBlackTree(backend):
700700
assert [node.key for node in in_order] == [5, 10, 20, 30, 40, 50]
701701
assert [node.key for node in pre_order] == [40, 20, 10, 5, 30, 50]
702702

703+
assert tree.search(50) == 0
704+
assert tree.search(20) == 3
705+
assert tree.search(30) == 2
703706
tree.delete(50)
704707
tree.delete(20)
705708
tree.delete(30)
709+
assert tree.search(50) is None
710+
assert tree.search(20) is None
711+
assert tree.search(30) is None
706712

707713
in_order = trav.depth_first_search(order='in_order')
708714
pre_order = trav.depth_first_search(order='pre_order')

0 commit comments

Comments
 (0)