我想实现这段代码但是我多次失败了。任何人都可以给我这个代码的答案吗?
import sys, threading
sys.setrecursionlimit(10**7) # max depth of recursion
threading.stack_size(2**25) # new thread will get stack of such size
def IsBinarySearchTree(tree):
# Implement correct algorithm here
if tree.right > tree.nodes:
return True
if tree.left < tree.nodes:
return True
def main():
nodes = int(sys.stdin.readline().strip())
tree = []
for i in range(nodes):
tree.append(list(map(int, sys.stdin.readline().strip().split())))
if IsBinarySearchTree(tree):
打印(“正确”)
其他:
打印( “不正确”)
threading.Thread(target=main).start()
答案 0 :(得分:0)
所以我不会在这里提供任何代码,因为这显然是一个硬件分配,理解这一点很重要。
BST本质上是一个树,其中给定元素左侧的每个元素都小于该元素,并且给定元素右侧的每个元素都大于给定元素。
确定给定树是否为BST的一种方法是递归检查左右子树并检查这些子树是否也是BST。要执行此操作,请检查子树的左右子树是否为BST,依此类推,直到到达树的底部。到达树的底部后,您可以明确地说某个树是否为BST,但您必须通过检查树中的每个元素来到达“底部”!
我希望这有助于您了解如何开始。