python 遍历列表后保存_递归后序遍历到Python中的列表?

可以传入可调用对象,也可以编写生成器:def postorder(T):

if T != None:

postorder(T.left)

postorder(T.right)

print T.data,

def postorder_func(T, f):

if T != None:

postorder_func(T.left, f)

postorder_func(T.right, f)

f(T.data)

def postorder_gen(T):

if T != None:

for i in postorder_gen(T.left):

yield i

for i in postorder_gen(T.right):

yield i

yield T.data

class T:

def __init__(self, left = None, data = None, right = None):

self.left = left

self.data = data

self.right = right

one_half = T(data=.5)

three_halves = T(data=1.5)

one = T(one_half, 1, three_halves)

three = T(data=3)

root = T(one, 2, three)

postorder(root)

print ""

a = []

postorder_func(root, a.append)

print a

a = list(postorder_gen(root))

print a

或者,一个单一的解决方案:def postorder_one(T):

return [] if T is None else postorder_one(T.left)+[T.data]+postorder_one(T.right)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值