class Tree:
# def __init__(self):
# pass
def __init__(self, data=None, left=None, right=None):
self.data = data
self.left = left
self.right = right
def firsttraverse(t):
l = []
while t or l:
# print l
if(t):
print t.data,
l.append(t)
t = t.left
else:
t = l.pop()
t = t.right
def midtraverse(t):
l = []
while t or l:
# print l
if(t):
l.append(t)
t = t.left
else:
t = l.pop()
print t.data,
t = t.right
def lasttraverse(t):
l = []
mark = None
while(t or len(l)!=0):
# print l
while t:
l.append(t)
t = t.left
t= l.pop()
if not t.right or t.right == mark:
print t.data,
mark = t
t = None
else:
l.append(t)
t = t.right
t = Tree('-',Tree('*',Tree('a'),Tree('b')),Tree('/',Tree('d'),Tree('e')))
# t= Tree()
firsttraverse(t)
print '----------'
midtraverse(t)
print '----------'
lasttraverse(t)
树的前序中序后序非递归遍历
最新推荐文章于 2023-06-27 10:46:10 发布