Skip to content

Commit e8d2290

Browse files
committed
registered RedBlackTree methods
1 parent a591549 commit e8d2290

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

pydatastructs/trees/_backend/cpp/RedBlackTree.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,10 @@ static struct PyMethodDef RedBlackTree_PyMethodDef[] = {
200200
{"insert", (PyCFunction) RedBlackTree_insert, METH_VARARGS, NULL},
201201
{"lower_bound", (PyCFunction) RedBlackTree_lower_bound, METH_VARARGS | METH_KEYWORDS, NULL},
202202
{"upper_bound", (PyCFunction) RedBlackTree_upper_bound, METH_VARARGS | METH_KEYWORDS, NULL},
203+
{"_get_parent", (PyCFunction) RedBlackTree__get_parent, METH_VARARGS, NULL},
204+
{"_get_grand_parent", (PyCFunction) RedBlackTree__get_grand_parent, METH_VARARGS, NULL},
205+
{"_get_sibling", (PyCFunction) RedBlackTree__get_sibling, METH_VARARGS, NULL},
206+
{"_get_uncle", (PyCFunction) RedBlackTree__get_uncle, METH_VARARGS, NULL},
203207
{NULL}
204208
};
205209

pydatastructs/trees/tests/test_binary_trees.py

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,6 @@ def test_SplayTree():
544544

545545
def test_RedBlackTree():
546546
tree = RedBlackTree(backend=Backend.CPP)
547-
# tree = RedBlackTree()
548547
tree.insert(10, 10)
549548
tree.insert(18, 18)
550549
tree.insert(7, 7)
@@ -585,39 +584,40 @@ def test_RedBlackTree():
585584
assert tree.upper_bound(60) is None
586585
assert tree.upper_bound(61) is None
587586

588-
# tree = RedBlackTree()
589-
590-
# assert tree.lower_bound(1) is None
591-
# assert tree.upper_bound(0) is None
587+
tree = RedBlackTree(backend=Backend.CPP)
592588

593-
# tree.insert(10)
594-
# tree.insert(20)
595-
# tree.insert(30)
596-
# tree.insert(40)
597-
# tree.insert(50)
598-
# tree.insert(60)
599-
# tree.insert(70)
600-
# tree.insert(80)
601-
# tree.insert(90)
602-
# tree.insert(100)
603-
# tree.insert(110)
604-
# tree.insert(120)
605-
# tree.insert(130)
606-
# tree.insert(140)
607-
# tree.insert(150)
608-
# tree.insert(160)
609-
# tree.insert(170)
610-
# tree.insert(180)
611-
612-
# assert tree._get_sibling(7) is None
589+
assert tree.lower_bound(1) is None
590+
assert tree.upper_bound(0) is None
591+
592+
tree.insert(10)
593+
tree.insert(20)
594+
tree.insert(30)
595+
tree.insert(40)
596+
tree.insert(50)
597+
tree.insert(60)
598+
tree.insert(70)
599+
tree.insert(80)
600+
tree.insert(90)
601+
tree.insert(100)
602+
tree.insert(110)
603+
tree.insert(120)
604+
tree.insert(130)
605+
tree.insert(140)
606+
tree.insert(150)
607+
tree.insert(160)
608+
tree.insert(170)
609+
tree.insert(180)
610+
assert str(tree) == "[(None, 10, None, None), (0, 20, None, 2), (None, 30, None, None), (1, 40, None, 5), (None, 50, None, None), (4, 60, None, 6), (None, 70, None, None), (3, 80, None, 11), (None, 90, None, None), (8, 100, None, 10), (None, 110, None, None), (9, 120, None, 13), (None, 130, None, None), (12, 140, None, 15), (None, 150, None, None), (14, 160, None, 16), (None, 170, None, 17), (None, 180, None, None)]"
611+
612+
assert tree._get_sibling(7) is None
613613

614-
# trav = BinaryTreeTraversal(tree)
615-
# in_order = trav.depth_first_search(order='in_order')
616-
# pre_order = trav.depth_first_search(order='pre_order')
617-
# assert [node.key for node in in_order] == [10, 20, 30, 40, 50, 60, 70, 80, 90,
618-
# 100, 110, 120, 130, 140, 150, 160, 170, 180]
619-
# assert [node.key for node in pre_order] == [80, 40, 20, 10, 30, 60, 50, 70, 120, 100,
620-
# 90, 110, 140, 130, 160, 150, 170, 180]
614+
trav = BinaryTreeTraversal(tree, backend=Backend.CPP)
615+
in_order = trav.depth_first_search(order='in_order')
616+
pre_order = trav.depth_first_search(order='pre_order')
617+
assert [node.key for node in in_order] == [10, 20, 30, 40, 50, 60, 70, 80, 90,
618+
100, 110, 120, 130, 140, 150, 160, 170, 180]
619+
assert [node.key for node in pre_order] == [80, 40, 20, 10, 30, 60, 50, 70, 120, 100,
620+
90, 110, 140, 130, 160, 150, 170, 180]
621621

622622
# tree.delete(180)
623623
# tree.delete(130)

0 commit comments

Comments
 (0)