大家好,我是一名编程新手,以下是我的非常简单的代码:
def postorder(T):
if T != None:
postorder(T.left)
postorder(T.right)
print T.data,
我希望的是,不是输出遍历结果,而是将该函数所获取的信息存储在数组或类似的数据结构中,这样我就可以将该信息用于其他用途。
大家好,我是一名编程新手,以下是我的非常简单的代码:
def postorder(T):
if T != None:
postorder(T.left)
postorder(T.right)
print T.data,
我希望的是,不是输出遍历结果,而是将该函数所获取的信息存储在数组或类似的数据结构中,这样我就可以将该信息用于其他用途。
您可以做:
def postorder(tree):
data = []
def recurse(node)
if not node:
return
recurse(node.left)
recurse(node.right)
data.append(node.data)
recurse(tree)
return data
内部函数recurse
负责遍历树形结构,数据会自动添加到data
中。
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)
yield from postorder_gen(T.left)
。 - Simeon Visser