二分探索木に関して2つの質問があります。どちらも空の木についてです。
- 空の木(null)は有効ですか?
- 子のないルートノードは有効ですか?
二分探索木に関して2つの質問があります。どちらも空の木についてです。
はい、そしてはい。
もちろん、空のツリーが何であるかは、「有効」という言葉の意味と同様に、実装によって異なりますが、一般的には、両方の質問に「はい」と答えます。空のツリーは、対象となるエンティティのセットが空の場合を表し、単一ノードは、セットに1つのエンティティが含まれている場合を表します。
子のない単一のノードは確かに有効であり、バイナリツリー構造によると:
(可変)二分木BiTreeは、空の状態または空でない状態にすることができます。
- 空の場合、データは含まれていません。
- 空でない場合は、ルート要素と呼ばれるデータオブジェクトと、左側のサブツリーと右側のサブツリーと呼ばれる2つの異なるBiTreeオブジェクトが含まれます。
完全を期すために、このウィキペディアのエントリは、用語などの非常に便利な要約です。
空の木(null)は有効ですか?
空の場合、ツリーはありません。したがって、妥当性の問題は発生しません。
子のないルートノードは有効ですか?
はい。それは1つの要素だけが入っているティーです。
リンゴとオレンジを混ぜ合わせていると思います。
null
は一部のプログラミング言語の値であり、データ構造の実装の具体的な表現に関連しています。これで、ツリーは順序集合になります。それ以上でもそれ以下でもありません。もちろん、セットは空にすることができます!これは、実装では、次のようなものであることを意味します。
MyTree tree = null
空の木を表しますか?まあ、それはあなたのモデルに依存します。たとえば、空のサブツリーは、値がなく、リーフへの参照が無効になっているノードで表される必要があると考えることができます。そのモデルでは、null
ポインタは論理的な観点からは無意味です。しかし、これは1つのアプローチにすぎません。歩哨ベースのアプローチはプログラミングするのが楽しいですが、それはメモリを拡張します。その後、nullだけで空のノードをモデル化できます。その場合、null
ポインタは空のツリーにすることができます。
二分木は再帰的に次のように定義できます。
A single node with either no children, or with two children -
each of which is a binary tree.
はい、両方の条件が当てはまります。二分木の場合、各ノードは0、1、または2つの子を持つことができます。ツリーにルートノードのみがあり、他のノードがない場合、それはNULLツリーと呼ばれます。