我编写了以下代码,从给定的输入创建二叉搜索树,并找到树的最小值。
输入:
输入的第一行包含测试用例的数量T。对于每个测试用例,只有一行输入是表示树的字符串,如下所述:
示例:
2
5 4 6 3 N N 7 1
9 N 10 N 11
字符串中的值按树的级别顺序遍历的顺序,其中,数字表示节点值,而字符“ N”表示NULL子代。
这里是问题的链接:Minimum element in BST。
class node:
def __init__(self,value):
self.val=value
self.left=None
self.right=None
class BST:
def __init__(self,value):
self.root=node(value)
def insert(self,value):
if self.root==None:
self.root=node(value)
else:
self._insert(value,self.root)
def _insert(self,value,curr):
if value<curr.val:
if curr.left==None:
curr.left=node(value)
else:
self._insert(value,curr.left)
elif value>curr.val:
if curr.right==None:
curr.right=node(value)
else:
self._insert(value,curr.right)
def print_tree(self):
if self.root!=None:
self._print_tree(self.root)
def _print_tree(self,cur_node):
if cur_node!=None:
self._print_tree(cur_node.left)
print (str(cur_node.val))
self._print_tree(cur_node.right)
def min_val(self):
if self.root==None:
return -1
else:
self._min_val(self.root)
def _min_val(self,curr_node):
if curr_node.left==None:
print(curr_node.val)
else:
self._min_val(curr_node.left)
##Your code here
t=int(input()) #number of test cases
for j in range(t):
a=input()
lst=a.split(" ")
root=int(lst[0])
tree=BST(root)
for i in range(1,len(lst)):
if lst[i]!=N:
tree.insert(int(lst[i]))
tree.min_val()
我要去哪里错了?每当我运行代码时,都会显示EOF错误。但是相同的代码在带有自定义输入的IDE中也可以很好地工作。
首先,您会在其中遇到一些语法错误:
if lst[i]!=N:
->
if lst[i] != 'N':
class node:
def __init__(self,value):
->
class node:
def __init__(self,value):
您还可以分享所得到的错误吗?
编辑:看问题:
任务是完成函数minValue(),该函数将root作为参数并返回BST的最小元素。
您只应提供minValue(root)
,不得提供其他任何内容。测试引擎将为您处理读取输入的内容。