遍历二叉树 python

#coding=UTF-8

class Node:
def __init__(self,value=None,left=None,right=None):
self.value = value
self.left = left
self.right = right

#前序遍历
def preTraverse(root):
if root ==None:
return None
print root.value
preTraverse(root.left)
preTraverse(root.right)

#中序遍历
def midTraverse(root):
if root ==None:
return None
midTraverse(root.left)
print root.value
midTraverse(root.right)

#后序遍历
def afterTraverse(root):
if root ==None:
return None
afterTraverse(root.left)
afterTraverse(root.right)
print root.value

#如果知道二叉树的前序遍历和中序遍历,求这棵二叉树的后序遍历
def findTree(preList,midList,afterList):
if len(preList)==0:
return
if len(preList)==1:
afterList.append(preList[0])
return
root=preList[0]
n=midList.index(root)
findTree(preList[1:n+1],midList[:n],afterList)
findTree(preList[n + 1:], midList[n + 1:], afterList)
afterList.append(root)
return afterList

if __name__=='__main__':
root = Node('D',Node('B',Node('A'),Node('C')),Node('E',right=Node('G',Node('F'))))
print '前序遍历'
preTraverse(root)
print '中序遍历'
midTraverse(root)
print '后序遍历'
afterTraverse(root)

preList = list('DBACEGF')
midList = list('ABCDEFG')
afterList = []
print findTree(preList,midList,afterList)

转载于:https://www.cnblogs.com/sjxm2017/p/10437157.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值