Python 如何从二进制搜索树中获取最小值
我已经创建了一个二进制搜索类,但我正在努力创建一个最小函数来帮助查找二叉树中的最小值Python 如何从二进制搜索树中获取最小值,python,binary-search-tree,Python,Binary Search Tree,我已经创建了一个二进制搜索类,但我正在努力创建一个最小函数来帮助查找二叉树中的最小值 class BinarySearchTree: def __init__(self, data): self.data = data self.left = None self.right = None def insert(self, new_data): if new_data == self.data:
class BinarySearchTree:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def insert(self, new_data):
if new_data == self.data:
return
elif new_data < self.data:
if self.left == None:
self.left = BinarySearchTree(new_data)
else:
self.left.insert(new_data)
else:
if self.right == None:
self.right = BinarySearchTree(new_data)
else:
self.right.insert(new_data)
def create_string(self,spaces):
info = ' ' * spaces + str(self.data)
if self.left != None:
info += '\n(l)' + self.left.create_string(spaces + 4)
if not self.right == None:
info += '\n(r)' + self.right.create_string(spaces + 4)
return info
def __str__(self):
representation = self.create_string(0)
return representation
def get_left(self):
return self.left
def get_right(self):
return self.right
def get_data(self):
return self.data
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree.get_left
类二进制搜索树:
定义初始化(自身,数据):
self.data=数据
self.left=无
self.right=无
def插入(自身、新_数据):
如果new_data==self.data:
返回
elif新数据
所以我写了最小值函数,但由于某种原因,它总是返回一个非类型错误。有没有人知道如何在二叉树上保留_,直到不再有节点为止非递归解决方案
def minimum(tree):
while tree.left is not None:
tree = tree.left
return tree.data
非递归解
def minimum(tree):
while tree.left is not None:
tree = tree.left
return tree.data
非递归解
def minimum(tree):
while tree.left is not None:
tree = tree.left
return tree.data
非递归解
def minimum(tree):
while tree.left is not None:
tree = tree.left
return tree.data
如果没有
tree.left
您应该返回tree
:
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
正如您在问题中提到的,因为没有
树。left
返回树。get_left
将返回None
如果没有树。left
您应该返回树
:
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
正如您在问题中提到的,因为没有
树。left
返回树。get_left
将返回None
如果没有树。left
您应该返回树
:
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
正如您在问题中提到的,因为没有
树。left
返回树。get_left
将返回None
如果没有树。left
您应该返回树
:
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
正如您在问题中提到的,因为没有树。left
返回树。get_left
将返回None
def minimum(tree):
if tree.left:
return minimum(tree.get_left)
else:
return tree
首先if语句检查tree.left=None,因此返回tree.get\u left返回None
首先if语句检查tree.left=None,因此返回tree.get\u left返回None
首先if语句检查tree.left=None,因此返回tree.get\u left返回None
首先if语句检查tree.left=None,因此返回tree.get\u left返回None。
其他:返回tree.data
应该修复itreturn最小值(tree.get\u left()),即使替换为tree,它仍然返回None类型。get\u left()其他:返回tree.data
应该修复itreturn最小值(tree.get\u left())即使用树替换,它仍然返回none类型。get_left()其他:返回树。data
应该修复itreturn最小值(tree.get_left())即使用树替换,它仍然返回none类型。get_left()其他:返回树。data
应该修复itreturn最小值(tree.get_left())它仍然返回none类型,即使在替换为tree.get_left()之后,编写:而tree.left:
-部分不是无的
是多余的。我发现奇怪的是,即使我在cals中定义了“get_left()”,当我在我的最小函数中调用它时,什么都没有显示?,或者只是一个nonetype@Matthew当您返回tree.get_left
或返回最小值(tree.get_left)
时,您不会调用get_left
。相反,您返回函数或将其传递给最小值
,而不是其结果。记住,python函数是可以从函数返回或传递给函数的对象。啊,我理解。这是否意味着,如果出现非类型错误,函数就不会返回?@Matthew我想实际上你应该看到AttributeError
类似于“非类型”对象没有属性“left”
这样写会更像python:while tree。left:
-部分不是None
是多余的。我觉得奇怪的是尽管我已经在cals中定义了“get_left()”,但当我在最小函数中调用它时,什么也没有显示,或者只是一个nonetype@Matthew当您返回tree.get_left
或返回最小值(tree.get_left)
时,您不会调用get_left
。相反,您返回函数或将其传递给最小值
,而不是其结果。记住,python函数是可以从函数返回或传递给函数的对象。啊,我理解。这是否意味着,如果出现非类型错误,函数就不会返回?@Matthew我想实际上你应该看到AttributeError
类似于“非类型”对象没有属性“left”
这样写会更像python:while tree。left:
-部分不是None
是多余的。我觉得奇怪的是尽管我已经在cals中定义了“get_left()”,但当我在最小函数中调用它时,什么也没有显示,或者只是一个nonetype@Matthew当您返回tree.get_left
或返回最小值(tree.get_left)
时,您不会调用get_left
。相反,您返回函数或将其传递给最小值
,而不是其结果。记住,python函数是可以从函数返回或传递给函数的对象。啊,我理解。是吗