我怎样才能返回一个中序遍历而不是仅仅打印它

沙漠游侠

截至目前,我的代码仅打印出有序遍历。但是,我希望它返回一个。

class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None
def inorder(node):
    if(node==None):
        return
    else:
        inorder(node.left)
        print(node.data)
        inorder(node.right)
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)

PS 我知道这棵树不是二叉搜索树。

保罗·鲁尼

您可以使用生成器。yield from递归调用和yield数据值。

class Node:
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None
def inorder(node):
    if node:
        yield from inorder(node.left)
        yield node.data
        yield from inorder(node.right)
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)

print(list(inorder(root)))

结果

[4, 2, 5, 1, 3]

如果您希望它使用列表而不是生成器。

def inorder_list(node):
    accum = []
    inorder_list_impl(node, accum.append)
    return accum

def inorder_list_impl(node, accumulator):
    if node:
        inorder_list_impl(node.left, accumulator)
        accumulator(node.data)
        inorder_list_impl(node.right, accumulator)

你也可以使用

inorder_list_impl(root, print)

只打印值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎样才能在JList中显示一个ArrayList?

我怎样才能牢固地返回一个结构体数组?

我怎样才能@Input一个复杂的对象到我的AngularDart组件中?

我怎样才能让一个元素失去它的盒子模型?

我怎样才能得到一个结果?SQL:CASE返回两行

我怎样才能使`cacafire`显示在原始的gnome终端中,而不是一个单独的窗口中?

我怎样才能让Selenium使用我的firefox(而不是创建一个新的)

我怎样才能从2个函数中创建一个?

我怎样才能让我的Ubuntu从给定的源中寻找一个库

我怎样才能漂亮地打印一个带有其字段命名的结构?

我怎样才能适当地模拟出一个返回yield的方法?

我怎样才能只返回一个共同的价值?

我怎样才能“给”一个分叉进程一个不同于它“要求”的动态库?

我怎样才能像我在 Python 中那样做一个 PHP 请求,它给我 JSON 中的数据

我怎样才能使它成为一个准备好的语句代码?

从数组中删除一个值。我怎样才能让它工作

我怎样才能返回一个 Promise?

我怎样才能让它移动到一个新目录?

我怎样才能写一个指向函数?

我怎样才能在数组结构中获得一个单一的值

我怎样才能聚合计数函数返回一个数字而不是一个数组

我怎样才能重复一个模式?

在 Haskell Shake 中,我怎样才能想要一个文件模式?

我怎样才能返回一个循环?

我怎样才能增加一个变量,以便它存储我想要的值?

我怎样才能让 RegEx 返回匹配的完整值而不仅仅是第一个字符

我有一个 formArray 并且在那个 formArray 中我只有 formControls,而不是 formGroup,我怎样才能通过 html 中的控件循环?

我有一个有效的代码,但我怎样才能让它更优雅

我怎样才能得到一个 div 的索引值只是点击它?