Skip to content

Commit 019fddf

Browse files
TreeNode check added for heap.py (#135)
1 parent e811970 commit 019fddf

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,4 @@ __pycache__/
6464
.idea/
6565
build/
6666
dist/
67+
venv/

pydatastructs/trees/heaps.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ class DHeap(Heap):
2626
2727
elements : list, tuple
2828
Optional, by default 'None'.
29-
List/tuple of initial elements in Heap.
29+
List/tuple of initial TreeNode in Heap.
30+
3031
3132
heap_property : str
3233
If the key stored in each node is
@@ -83,6 +84,9 @@ def __new__(cls, elements=None, heap_property="min", d=4):
8384
raise ValueError("%s is invalid heap property"%(heap_property))
8485
if elements is None:
8586
elements = DynamicOneDimensionalArray(TreeNode, 0)
87+
else:
88+
if not all(map(lambda x: _check_type(x, TreeNode), elements)):
89+
raise ValueError("Expect a list/tuple of TreeNode got %s"%(elements))
8690
obj.heap = elements
8791
obj._last_pos_filled = obj.heap._last_pos_filled
8892
obj._build()

pydatastructs/trees/tests/test_heaps.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ def test_BinaryHeap():
4848
sorted_elements = [min_heap.extract().key for _ in range(8)]
4949
assert expected_sorted_elements == sorted_elements
5050

51+
non_TreeNode_elements = [
52+
(7, 7), TreeNode(25, 25), TreeNode(100, 100),
53+
TreeNode(1, 1), (2, 2), TreeNode(3, 3),
54+
TreeNode(17, 17), TreeNode(19, 19), TreeNode(36, 36)
55+
]
56+
assert raises(ValueError, lambda:
57+
BinaryHeap(elements = non_TreeNode_elements, heap_property='min'))
5158
def test_TernaryHeap():
5259
max_heap = TernaryHeap(heap_property="max")
5360
assert max_heap.extract() is None

0 commit comments

Comments
 (0)