首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python语言中的PreOrder树遍历

Python语言中的PreOrder树遍历
EN

Stack Overflow用户
提问于 2020-05-13 07:27:27
回答 2查看 188关注 0票数 0

我正在尝试编写一个函数,该函数将节点作为参数,并返回该二叉树的PreOrder遍历字符串。

代码语言:javascript
复制
class Node(object):
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

root = Node(1)
root.left = Node(2)
root.left.right = Node(4)
root.left.left = Node(5)
root.right = Node(3) 

def PreOrder(node): 

    path = ''

    if node:
        #print(node.value)
        path += (str(node.value) + "_")
        PreOrder(node.left)
        PreOrder(node.right)

    return path

print(PreOrder(root))

输出: 1_

谢谢:)

EN

回答 2

Stack Overflow用户

发布于 2020-05-14 01:01:33

我认为您需要将PreOrder(node.left)和PreOrder(node.right)添加到路径中。

因此,代码将如下所示:

代码语言:javascript
复制
class Node(object):
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

#                   1
#               2       3
#           5       4

def PreOrder(node): 

    path = ''

    if node:
        path += (str(node.value) + "_")
        path += PreOrder(node.left) 
        path += PreOrder(node.right)

    return path

print(PreOrder(root))

# prints 1_2_5_ 4_  3_
票数 0
EN

Stack Overflow用户

发布于 2020-05-14 01:02:05

Check this link。这是一个参考链接,你可以在这里看到更多的遍历技术。我在下面提供了用于预订单遍历的代码。检查此引用,并将您的代码与需要更正的代码进行比较。

代码语言:javascript
复制
class Node:

    def __init__(self, data):

        self.left = None
        self.right = None
        self.data = data
# Insert Node
    def insert(self, data):

        if self.data:
            if data < self.data:
                if self.left is None:
                    self.left = Node(data)
                else:
                    self.left.insert(data)
            elif data > self.data:
                if self.right is None:
                    self.right = Node(data)
                else:
                    self.right.insert(data)
        else:
            self.data = data

# Print the Tree
    def PrintTree(self):
        if self.left:
            self.left.PrintTree()
        print( self.data),
        if self.right:
            self.right.PrintTree()

# Preorder traversal
# Root -> Left ->Right
    def PreorderTraversal(self, root):
        res = []
        if root:
            res.append(root.data)
            res = res + self.PreorderTraversal(root.left)
            res = res + self.PreorderTraversal(root.right)
        return res

root = Node(1)
root.insert(2)
root.insert(3)
root.insert(4)
root.insert(5)
print(root.PreorderTraversal(root))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61763770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档