-3

이 코드를 구현하고 싶지만 여러 번 실패했습니다. 어느 누구도이 코드의 답을 나에게 줄 수 있습니까?사용자가 입력 한 파이썬 프로그램을 구현하는 방법은 바이너리 검색 트리를 만들 것인가 아닌가?

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): 

인쇄 ("올바른") 다른 이 꽤 명확하게 HW 할당하기 때문에 인쇄 ("INCORRECT")

threading.Thread(target=main).start() 
+0

이 코드의 대부분은'# 올바른 알고리즘 구현 '을 제외하고는 관계가 없습니다. 우리가 골격 대신에 작동하지 않았던 것들 중 하나를 보여 주시겠습니까? – Ryan

+0

이 코드는 내 교수가 제공하고 구현해야합니다. irrelavant라면 나에게 올바른 결과를주는 또 다른 코드를 제공하십시오. –

+2

귀하의 질문과 관련이 없음을 의미합니다. 구현할 알고리즘을 알고 있습니까? – Ryan

답변

0

그래서 내가 여기에있는 코드를 제공하지 않습니다 이것을 이해하는 것이 중요합니다.

BST는 기본적으로 주어진 요소의 왼쪽에있는 모든 요소가 해당 요소보다 작고 지정된 요소의 오른쪽에있는 모든 요소가 주어진 요소보다 큽니다.

주어진 트리가 BST인지 알아내는 한 가지 방법은 반복적으로 왼쪽 및 오른쪽 하위 트리를 확인하고 해당 하위 트리가 BST인지 확인하는 것입니다. 이를 수행하려면 트리 아래쪽에 도달 할 때까지 하위 트리의 왼쪽 및 오른쪽 하위 트리가 BST인지 등을 확인합니다. 트리의 바닥에 도달하면 특정 트리가 BST인지 여부는 확실하게 알 수 있지만 트리의 모든 요소를 ​​확인하여 "하단"에 도달해야합니다.

저는 이것이 시작하는 방법을 이해하는 데 조금 도움이되기를 바랍니다.