0
テキストファイルからデータを読み込み、それに応じてノードを接続するBSTを正常に作成しましたが、アンバランスな方法でもユーザーの入力に問題があります。ここでバイナリ検索ツリーへのマニュアルの追加
は、テキストファイルの行がどのように見えるかの例です:
student id1, mark1, mark2, mark3, mark4, mark5, midterm mark, exam mark
このようなBSTの外観にこれを回すマイ機能:
def marks(tree, Data):
global assignment1
global assignment2
global assignment3
global assignment4
global assignment5
global midterm
global exam
global counter
for students in Data[:len(Data)-2]:
data = students.split(',')
assignment1 += float(data[1])
assignment2 += float(data[2])
assignment3 += float(data[3])
assignment4 += float(data[4])
assignment5 += float(data[5])
midterm += float(data[6])
exam += float(data[7])
if float(data[7]) < 32.5:
counter+=1
tree = add(tree, data)
return tree
def add(tree, data):
if tree == None:
tree = {'data':data,'left':None, 'right':None}
return tree
elif data[0] < tree['data'][0]:
tree['left'] = add(tree['left'], data)
return tree
elif data[0] > tree['data'][0]:
tree['right'] = add(tree['right'], data)
return tree
これはBSTを生成し、今はBSTに手作業で追加する機能を作成したいと考えています(常に葉で追加する)。例えば、私が入力したIDが300だった場合、私は、私のBSTを印刷するとき
def manual_addition(myTree):
new_student = {}
student_id = input("Please enter the student id: ")
hw1 = input("Please enter their first assignment mark: ")
hw2 = input("Please enter their second assignment mark: ")
hw3 = input("Please enter their third assignment mark: ")
hw4 = input("Please enter their fourth assignment mark: ")
hw5 = input("Please enter their fifth assignment mark: ")
midterm = input("Please enter their midterm mark: ")
exam = input("Please enter their final exam mark: ")
new_student = [student_id, hw1, hw2, hw3, hw4, hw5, midterm, exam]
myTree = add(myTree, new_student)
return myTree
はしかし、2000年よりも大きいIDの右にそれは以来、私のBSTの非常に左側に表示されます表示されますテキストファイルの最小IDは2000です。エラーは何ですか?