表題の件について質問です。
HackerRankというサイトでプログラミングの問題を解いています。
データ構造は以下のコードで作りその後ノードの値を足しあわせていこうと思ったのですが、
どのように合計値を計算すればよいのか方針が分かりません。
ヒントやアドバイスをいただけないでしょうか。
※もし、データ構造に問題がありましたらそれも合わせてご教示いただけると幸いです。

よろしくお願いします。

[問題]
https://www.hackerrank.com/challenges/cut-the-tree

[コード]

class Tree:
    """
    Original Tree Structure which is representing the Input
    """
    def __init__(self, value, position):
        """
        Initialize class instance
        :param value: value of the node
        """
        self.value = value
        self.position = position
        self.connection = []

    def set_connection(self, connection):
        """
        set connection with other instance
        :param connection:
        """
        self.connection.append(connection)

    def set_value(self, value):
        """
        set value of the instance
        :param value: value
        """
        self.connection = value

    def get_value(self, position):
        return self.value

    def get_sum(self):
        """
        Running Tree and sum up the value of node.
        :param frm: which node coming from
        :param to: which node goes next
        :return: sum value
        """
        return self.value

    def get_position(self):
        return self

if __name__ == "__main__":

    # ----- Initializing ------
    N = int(input())
    values = input().split()
    T = []
    a = 0
    for value in values:
        T.append(Tree(int(value), a))
        a += 1

    input_list = []
    for i in range(N-1):
        in_con = input().split()
        T[int(in_con[0])-1].set_connection(int(in_con[1])-1)
        T[int(in_con[1])-1].set_connection(int(in_con[0])-1)
        input_list.append(in_con)

    # ----- Start searching -----

    〜ここから値の走査を始める〜