深さを計算するためには、再帰的なアプローチが一般的に使われます。以下に、「int computedepth()」という関数を使用したコード例を示します。
def computedepth(node):
# ベースケース: ノードが存在しない場合は深さを0とする
if node is None:
return 0
# 左のサブツリーの深さを計算
left_depth = computedepth(node.left)
# 右のサブツリーの深さを計算
right_depth = computedepth(node.right)
# サブツリーの深さのうち、大きい方に1を加える
return max(left_depth, right_depth) + 1
上記の例では、ノードが左右の子ノードを持つ二分木を想定しています。関数 computedepth()
は、与えられたノードの深さを再帰的に計算します。ノードが存在しない場合は深さを0とし、左右のサブツリーの深さを計算して、より大きい方に1を加えた値を返します。
このコード例は、二分木に限らず、階層的な構造を持つデータ構造においても深さを計算することができます。必要に応じて、データ構造に合わせてアルゴリズムを修正することができます。