0

私は二分木を持っています:

       root
     /     \
    g      h
   / \    / \
 d   a   e   f
 / \
b   c

各ノードには、各ノードのDNAシーケンスを保存する「seq」機能があります('AACCGGT')

両方の葉(b、cおよびe、f)である姉妹には、それぞれにスコア(float)があります。

  • スコアを持つリーフのスコアを姉妹の b.score と c.score と比較します
  • d.score = max (b.score,c.score)

  • e、f、h も同様

  • a.seq と d.seq を比較 ==> d と e にはスコアがあります
  • g.score max (e.score, a.score) ... ルートに到達するまで 注: すべてのリーフノードには「モデル機能」があります b.model ==> に基づいて b.seq と c.seq を比較しますb.score 次に c.model ==> に基づいて c.score を取得しました

これは私が書いた関数ですが、それが私が望むものを実行するかどうかはわかりません。また、align_trna 関数がまだないため、テストできません。

デフォルトは影響する_スコア(n):

if (n.score)==0:
            n.score,n.model=affect_score(n.get_children()[0])
        result=n.score
        model=n.model
        if not n.is_root():
            sis=n.get_sisters()[0]
            if sis.score==0:
                sis.score,sis.model=affect_score(sis.get_children()[0])
                n.score=align_trna(n.seq,sis.seq,n.model)
                sis.score,sis.model= align_trna(nseq, sis.seq,sis.model)
                if n.score < sis.score:
                        result=sis.score
                        model=sis.model

        return result,mode

l

私が書くことを考えているかどうかを教えてくれる人はいますか?ツリーデータ構造と再帰を扱うのは初めてであることに注意してください。

4

1 に答える 1