木のノードの合計を計算する方法


  1. 再帰を使用する方法: 木のノードを再帰的に探索し、各ノードの値を合計します。以下はPythonのコード例です。

    class TreeNode:
       def __init__(self, value, left=None, right=None):
           self.value = value
           self.left = left
           self.right = right
    def calculate_tree_sum(node):
       if node is None:
           return 0
       return node.value + calculate_tree_sum(node.left) + calculate_tree_sum(node.right)

    上記のコードでは、TreeNodeクラスを使用して木のノードを表現し、calculate_tree_sum関数でノードの合計を計算しています。再帰的に左の子ノードと右の子ノードを呼び出し、それらの合計を現在のノードの値に加えています。

  2. スタックを使用する方法: スタックを使用して深さ優先探索を行い、各ノードの値を合計します。以下はPythonのコード例です。

    def calculate_tree_sum(node):
       if node is None:
           return 0
       stack = [node]
       total_sum = 0
       while stack:
           current_node = stack.pop()
           total_sum += current_node.value
           if current_node.right:
               stack.append(current_node.right)
           if current_node.left:
               stack.append(current_node.left)
       return total_sum

    上記のコードでは、スタックを使用して深さ優先探索を行い、各ノードの値を合計しています。スタックからノードを取り出し、そのノードの値を合計に加えます。そして、右の子ノードと左の子ノードをスタックに追加します。

これらの方法を使用すると、木のノードの合計を効率的に計算することができます。どちらの方法も時間計算量はO(n)であり、nはノードの数です。