我真的需要你帮助完成这个有关二叉搜索树的练习。我必须一路颠倒从下到上、从左到右的遍历顺序。这是练习:
给定 BST,编写一个返回值列表的函数。树最后深度的元素将首先出现在输出列表中。接下来将出现前一深度级别的元素,一直到根。相同深度的元素将按照从小到大的顺序出现在列表中。
elements_in_bst_by order(tree_node)# 返回一个列表
例如,如果我们使用按以下顺序插入的值2、1、3、0创建 BST ,则将返回此列表[0, 1, 3, 2]
如果你不明白我会这样解释:
2 root level 0 1 3 children level 1 0 children level 2这应该返回 0 然后 1 然后 3 然后最后 2 (根)
这是练习中给出的模块(它包含二叉搜索树代码,PS:必须使用此模块):
class TreeNode(object):
"""A tree node with two children trees"""
def __init__(self, data, parent=None, left=None, right=None):
self.data = data
self.parent = parent
self.left = left
self.right = right
def search(self, value):
"""Search in a BST"""
if self.data is None:
return None
if self.data == value:
return self
if value < self.data:
if self.left is None:
return None
return self.left.search(value)
else:
if self.right is None:
return None
return self.right.search(value)
def insert(self, value):
"""insert a node in a BST"""
if self.data is None:
self.data = value
return
if value < self.data:
if self.left is None:
self.left = TreeNode(value, self)
else:
self.left.insert(value)
else:
if self.right is None:
self.right = TreeNode(value, self)
else:
self.right.insert(value)
它给了我这个错误:
列表不同: [2,1] != [1,2]
预期:[2,1]
实际:[1,2]
临摹微笑
富国沪深
相关分类