Python 该函数用于检查BST(二进制搜索树)是否有效吗
下面是我的代码,我的思想过程是,如果树中的最小值小于根,而树中的最大值大于根,它应该检查BST是否有效Python 该函数用于检查BST(二进制搜索树)是否有效吗,python,binary-search-tree,Python,Binary Search Tree,下面是我的代码,我的思想过程是,如果树中的最小值小于根,而树中的最大值大于根,它应该检查BST是否有效 def min(self): while self.left: self.root = self.left return self.root def max(self): while self.right: self.root = self.right return self.valu
def min(self):
while self.left:
self.root = self.left
return self.root
def max(self):
while self.right:
self.root = self.right
return self.value
def valid(self):
min = min(self.left)
max = max(self.right)
if self.root > min and self.root < max:
return True
def最小值(自):
而self.left:
self.root=self.left
返回自根
def最大值(自身):
虽然自我权利:
self.root=self.right
回归自我价值
def有效(自我):
最小=最小(自左)
max=max(自右)
如果self.root>min且self.root
不要重复使用名称min
和max
。它们已经引用了内置函数
您的min
和max
函数通过更改self.root
来更改树
您应该验证左侧和右侧子节点相对于父节点的值是否正确,然后验证这些子节点上的每个BST本身是否有效
class Node:
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
def valid(self):
if self.left and self.left.value > self.value:
return False
if self.right and self.right.value < self.value:
return False
return all(node.valid() for node in (self.left, self.right) if node)
类节点:
定义初始化(self,value,左=无,右=无):
自我价值=价值
self.left=左
self.right=right
def有效(自我):
如果self.left和self.left.value>self.value:
返回错误
如果self.right和self.right.value
是什么让你认为它不起作用?