2016-12-12 7 views
0

私は、ファミリーツリーデータ(人のキー名、それは値 - 子供)を持つ辞書を持っています。 与えられたメンバから別のメンバへの再帰的な深さを取得したい(get_depth(from_person、to_person))。Python、あるメンバーから別のメンバーにファミリーツリーの深さを計算する

+0

があなたの毒選んでチェックをより快適に感じるかもしれません。使用方法については幅優先探索や深さ優先探索 –

+0

@PatrickHaughを(深さ優先または-first幅)私は最初の深さをprefeerたいです、私は両方を理解しようとしているので、より良いです:) – SyntaxError

答えて

0

DFSを選択すると、奥行きを容易に把握できるようになります。

def get_depth(root, target): 
    if root == target: 
     return 0 
    if not d[root]: 
     return None 
    for child in d[root]: 
     depth = get_depth(child, target) 
     if depth is not None: 
      return 1 + depth 
    return None 

最後にreturnは厳密には必要ありませんが、私はこれらのことを綴っています。お気軽に質問してください。しかし、これはかなり自明です。あなたは-1None交換し、その後if depth >= 0

関連する問題