Skip to content

Commit 3def50b

Browse files
committed
Added Iterator capability to BinaryTree
Added Inorder iterator capability to BinaryTree. Now you can say "for x in bt" and you will get every element in the tree in its proper ordering.
1 parent 41c74be commit 3def50b

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

1. Log N Behavior/bst.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ def delete(self):
5151

5252
return self
5353

54+
def inorder(self):
55+
"""In order traversal of tree rooted at given node."""
56+
if self.left:
57+
for n in self.left.inorder():
58+
yield n
59+
60+
yield self.value
61+
62+
if self.right:
63+
for n in self.right.inorder():
64+
yield n
5465

5566
class BinaryTree:
5667

@@ -99,6 +110,11 @@ def removeFromParent(self, parent, value):
99110

100111
return parent
101112

113+
def __iter__(self):
114+
"""In order traversal of elements in the tree"""
115+
if self.root:
116+
return self.root.inorder()
117+
102118
def performance():
103119
"""Demonstrate execution performance"""
104120
n = 1024
@@ -120,7 +136,8 @@ def performance():
120136
2014.05.23 removeFromParent
121137
defect: elif value < parent.val:
122138
fix: elif value < parent.value
123-
139+
140+
2014.06.16 added inorder iterator capability to allow 'for x in bt'
124141
"""
125142

126143

0 commit comments

Comments
 (0)