我正在尝试编写一个函数,该函数将节点作为参数,并返回该二叉树的PreOrder遍历字符串。
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_
谢谢:)
发布于 2020-05-14 01:01:33
我认为您需要将PreOrder(node.left)和PreOrder(node.right)添加到路径中。
因此,代码将如下所示:
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_发布于 2020-05-14 01:02:05
Check this link。这是一个参考链接,你可以在这里看到更多的遍历技术。我在下面提供了用于预订单遍历的代码。检查此引用,并将您的代码与需要更正的代码进行比较。
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))https://stackoverflow.com/questions/61763770
复制相似问题