递归树遍历并将每个输出作为字符串python返回

时间:2017-02-25 23:35:23

标签: python algorithm tree binary-tree

基本上我有这个二叉树:

enter image description here

我想要做的是遍历它,所以我得到一个 str 返回给我,其值 + BA 。为此,我有以下功能:

def order(root):

    if (root != None):
        root.visit() # this calls a binary tree function that just prints out root.data
        order(root.right)
        order(root.left)

这很好用,但我需要返回 str 而不是打印每次遍历。我尝试创建一个str,然后执行 str + = root.visit(),但每次都重置,所以最后它不起作用。如何返回包含所有遍历的字符串?

我尝试了什么:

def order(root):
    rep = ""
    if (root != None):
        rep += root.visit()
        order(root.right)
        order(root.left)

    return rep

2 个答案:

答案 0 :(得分:0)

只是做:

def order(root):
    return '' if root is None else root.visit() + order(root.right) + order(root.left)

if声明:

def order(root):
    if root is None:
        return ''
    return root.visit() + order(root.right) + order(root.left)

答案 1 :(得分:0)

为了预先遍历二叉树,你应该遵循这个方案:

def traverse(node):
    rep = ""
    if node is not None:
        rep += node.visit()
        rep += traverse(node.right)
        rep += traverse(node.left)
    return rep