-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmybintree.py
85 lines (73 loc) · 2.16 KB
/
mybintree.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# The storage class for creating binary tree nodes.
class BinTreeNode:
def __init__( self, data ):
self.data = data
self.left = None
self.right = None
# ============ Depth-first traversal ===============
# 1. Preorder Traversal
def preorderTrav( subtree ):
if subtree is not None:
print subtree.data,
preorderTrav( subtree.left )
preorderTrav( subtree.right )
# 2. Inorder Traversal
def inorderTrav( subtree ):
if subtree is not None:
inorderTrav( subtree.left )
print subtree.data,
inorderTrav( subtree.right )
# 3. Postorder Traversal
def postorderTrav( subtree ):
if subtree is not None:
postorderTrav( subtree.left )
postorderTrav( subtree.right )
print subtree.data,
# ============ Breadth-first traversal ===============
def breadthFirstTrav( bintree ):
from listqueue import Queue
# Create a queue and add the root node to it.
q = Queue()
q.enqueue( bintree )
# Visit each node in the tree.
while not q.isEmpty():
# Remove the next node from the queue and visit it.
node = q.dequeue()
print node.data,
# Add the two children to the queue.
if node.left is not None:
q.enqueue( node.left )
if node.right is not None:
q.enqueue( node.right )
if __name__ == '__main__':
root = BinTreeNode( 'A' )
nodeB = BinTreeNode( 'B' )
nodeC = BinTreeNode( 'C' )
nodeD = BinTreeNode( 'D' )
nodeE = BinTreeNode( 'E' )
nodeF = BinTreeNode( 'F' )
nodeG = BinTreeNode( 'G' )
nodeH = BinTreeNode( 'H' )
nodeI = BinTreeNode( 'I' )
nodeJ = BinTreeNode( 'J' )
root.left = nodeB
root.right = nodeC
nodeB.left = nodeD
nodeB.right = nodeE
nodeC.left = nodeF
nodeC.right = nodeG
nodeE.left = nodeH
nodeG.left = nodeI
nodeG.right = nodeJ
print 'Preorder Traversal: '
preorderTrav( root )
print ''
print 'Inorder Traversal: '
inorderTrav( root )
print ''
print 'Postorder Traversal: '
postorderTrav( root )
print ''
print 'Breadth-first Traversal: '
breadthFirstTrav( root )
print ''