二叉树遍历 python_遍历二叉树 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值