Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 该函数用于检查BST(二进制搜索树)是否有效吗_Python_Binary Search Tree - Fatal编程技术网

Python 该函数用于检查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

下面是我的代码,我的思想过程是,如果树中的最小值小于根,而树中的最大值大于根,它应该检查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.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
是什么让你认为它不起作用?