-
再帰を使用する方法: 木のノードを再帰的に探索し、各ノードの値を合計します。以下は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
関数でノードの合計を計算しています。再帰的に左の子ノードと右の子ノードを呼び出し、それらの合計を現在のノードの値に加えています。 -
スタックを使用する方法: スタックを使用して深さ優先探索を行い、各ノードの値を合計します。以下は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はノードの数です。