2017-08-09 11 views
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です。エラーは何ですか?

答えて

0

データ型が浮動小数点型であるという言葉が出ているのは、比較演算子が文字列を比較していたときに最初にバイナリ検索ツリーがどのように作成されたのか疑問だからです。

関連する問題