web-dev-qa-db-ja.com

このデータモデルはリストですか、それともツリーですか?

以下の環境図でpython構文を使用して、教師は、この図には葉を含む11本の木(オレンジ色の境界)があることを教えてくれました。

enter image description here

それは教えられました ここ

リストは、要素ごとに1つずつ、インデックスラベルが付けられた隣接ボックスの行として表されます。各ボックスには、プリミティブ値が含まれるか、複合値を指します。例えば:

nested_list = [   [1, 2],    [],     [[3, False, None],[4, lambda : 5]]   ]

treeは、leafと呼ばれる単一の値またはtrees。通常、いくつかのタイプ制限がリーフに配置されます。たとえば、数値のツリー。例えば:

tree = [     [1, [2], 3, []],      [[4], [5,6]],       7    ]

私の質問:

一般に、ツリーは異種タイプのデータを持つことができますか?例:abc = [1, 2, 3, 4, lamda: 5] 5葉のある木?

注:ツリーが異種タイプのデータを持つことができるかどうかを理解することを目的としています

4
overexchange

これはlistおよびtreeの定義に大きく依存します。

数学的にlistは何も意味せず、treegraphの特別なサブセットにすぎません。

あなたの質問から推測して、あなたの教師のtreeの定義はネストされたリストです。その場合、ネストの深さ0のリストはまだツリーです。そう

abc = [1、2、3、4]

木です。

この場合、listtreeのサブセットです。すべてのリストはツリーですが、すべてのツリーがリストであるとは限りません。リストでのみ機能する操作がある場合、リストであるインスタンスのみをパラメーターとして使用できますが、ツリーのみの場合は使用できません。

少なくとも、それは数学でどのように機能するかです。このpython "pseudoexample"の場合、ツリーとリストの間にそれほど大きな違いはありません。先生はPython構造を定義として使用しており、明確な数学用語で用語を定義していないため、混乱していると思います。

8
Euphoric

構造体でラムダ式を使用することで問題を混乱させていると思います。表現 lambda:5はリストでも数字でもありません。機能です。したがって、葉の1つが数値ではなく関数であるため、この例のデータ構造は数値のツリーではありません。

しかし、ラムダを無視すると、式[1、2、3、4]はリストであり、alsoは、指定したツリーの定義に従ってツリーになります(これは、各ツリーが一連のツリーであるため、葉です)。これは矛盾ではありません。指定した定義によれば、リストもツリーになるからです。

1
JacquesB