2016-10-02 10 views
1

リストのリストは{{f、h、i}、{b、e、f、g}、{a、b、c、d}}リストのリストからツリーを作成

ルールを使ってツリーを構築する必要があります。

  • 最初の要素はルートです。
  • 残りの要素は子です。この例の

ツリーの外観:

   a 
     b  c  d 
    e f g 
    h i 

はあなたが私はこのためにアルゴを書くのを助けることができます。

ありがとうございました!

答えて

1

これは単純な再帰的な手順です。

  1. リストにリストが含まれている場合は、最初にそのリストを再帰的に処理し、最初の要素(ルート)に置き換えます。

  2. ここでは、リストには文字(ノードを表す)のみが含まれています。

    a。最初の文字をノードにします。

    b。最初の文字より小さい他の要素をソートします。それらを下向きの向いている枝につなぎ、最大の枝を最初の手紙の左の子にします。

    c。同様に、最初の文字よりも大きい他の要素をソートします。それらを下向きの右向きの枝につなぎ、最小のものを最初の文字の左の子にします。擬似コードで

def make_into_tree(l): 
    for e in l: 
     if type(e) == list: 
      e = make_into_tree(e) 

    root = e[0] 

    smaller = sorted(all letters smaller than e[0]) 
    for each s in smaller (except for first): 
     make s a right child of its predecessor 
    smaller_root = smaller[0] 
    make smaller_root left child of root 

    larger = sorted(all letter larger than e[0]) 
    for each l in larger (except for first): 
     make l a right child of its predecessor 
    larger_root = smaller[0] 
    make larger_root right child of root 

    return root 
+0

ありがとうございましたが、あなたは擬似コードbacuseを書くことができ、私はあなたのアイデアの全体を理解していませんか? – maz

+0

@maz更新を参照してください。 –

関連する問題