Skip to content

Commit 4a67e3f

Browse files
vpuru98czgdp1807
authored andcommitted
Convert _heapify method to n iterative one (#53)
1 parent 8da8f36 commit 4a67e3f

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

pydatastructs/trees/heaps.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,24 @@ def _swap(self, idx1, idx2):
9898
idx1_key, idx1_data
9999

100100
def _heapify(self, i):
101-
target = i
102-
l = 2*i + 1
103-
r = 2*i + 2
101+
while True:
102+
target = i
103+
l = 2*i + 1
104+
r = 2*i + 2
104105

105-
if l <= self._last_pos_filled:
106-
target = l if self._comp(self.heap[l].key, self.heap[target].key) \
106+
if l <= self._last_pos_filled:
107+
target = l if self._comp(self.heap[l].key, self.heap[target].key) \
107108
else i
108-
if r <= self._last_pos_filled:
109-
target = r if self._comp(self.heap[r].key, self.heap[target].key) \
109+
if r <= self._last_pos_filled:
110+
target = r if self._comp(self.heap[r].key, self.heap[target].key) \
110111
else target
111112

112-
if target != i:
113-
self._swap(target, i)
114-
i = target
115-
self._heapify(i)
113+
if target != i:
114+
self._swap(target, i)
115+
i = target
116+
else:
117+
break
118+
116119

117120
def insert(self, key, data):
118121
"""

0 commit comments

Comments
 (0)