web-dev-qa-db-ja.com

木の深さと高さ。ファンダメンタルズをリフレッシュ

アルゴリズムとデータ構造の復習を行っています。

木の深さ高さの概念について混乱しています。多くの場合、特に面接クイズに焦点を当てたサイトでは、これらの用語は同じ意味で使用されているように思われます。

基本的な文献では、それらをnodeおよびnotツリーに適用できると定義しているように思われます。

したがって、ルート(ノード)の深さは0です。ルート(または任意のサブノード)の高さは、その子の最大の高さです。

しかし、これらの用語を木に適用する場合、つまり木の最大の深さを見つける場合、これらの用語は「意味がない」ように見え、同じ意味で使用できます。つまり、最大の深さを見つけるには、最大の高さを計算するだけです。

たとえば、この投稿では ツリーのバランスが取れているかどうかを確認してください 答えはツリーの高さに焦点を当てていますが、バランスの定義はツリーの深さにある可能性があります

私の理解は正しいですか、それとも私はこれらの基本を台無しにしていますか?

17
Cratylus

ツリーについて話すとき、それらは同じことを意味します:ルートからリーフノードまでの最長のパスの長さ。

9
Tudor

次の例のように、depthは通常、ツリーノードのプロパティを説明するために使用され、heightはツリー全体のプロパティを説明するために使用されます。

  • ルートノードのdepthはゼロです
  • ノードXの深さ N
  • 木の高さはMです

ツリーの高さは、その最も深いノードの深さとして定義されます。

6
dasblinkenlight

ノードのheightは、そのノードからリーフまでの最長の下向きパスの長さです。根の高さは木の高さです。

ノードのdepthは、そのルートまでのパスの長さ(つまり、そのルートパス)です。これは、さまざまな自己平衡ツリー、特にAVLツリーの操作で一般的に必要になります。ルートノードの深さはゼロ、リーフノードの高さはゼロ、ノードが1つしかないツリー(したがって、ルートとリーフの両方)の深さと高さはゼロです。従来、空のツリー(ノードが許可されている場合はノードのないツリー)の深さと高さは-1です。

4
gsdf

深さは「ノードの深さ」[またはルートからの距離]です。高さは「木の高さ」[または、木から最も遠い葉までの距離]です。

正式に:

height(v) = 0                                                              v is a leaf
            max{height(u)|for every u such that u is a son of v} + 1       else

depth(v) = 0                                                                v root
           depth(u) + 1    where u is the parent of v                       else

[〜#〜] edit [〜#〜]:最大深度の概念を参照する場合、それは木の高さと同じです[ルートで最大]、次のようにして証明できます。誘導。

4
amit

二分探索木で

  1. ノードの高さ:ノードからリーフまでの最長の単純な下向きパス上の#エッジ
  2. 木の高さ:根の高さ
  3. ノードの深さ:ルートからノードまでの単純なパス(#エッジ)の長さ
0
Hasitha

ノードの深さ:ルートからノードまでのパスの長さです。ノードの高さ:ノードから最も内側のノード(リーフ)までのパスの長さです。

しかし、木の場合の高さと深さは同じです。木の高さ=木の深さ=最大の高さ=最大の深さ。

0
avishek gurung
private static int getHeight(BTreeNode n){

    if(n == null)
        return 0;

    int lHeight = getHeight(n.left);
    int rheight = getHeight(n.right);

    int height = 1+Math.max(lHeight,rheight);

    return height;
}
0
user3209952

Nodeの高さはリーフを参照しています-ソースノードからリーフノードへの最長パスの長さです。

Nodeの深さはルートノードを基準にしています。-ソースノードからルートまでの全長

しかし、一般的にツリー全体について話している場合、両方とも同じことを指します。ツリー内の特定のノードを取得した場合にのみ異なります。

0
nandy

木の高さは、最長のパスをたどる根から葉までのノードの数です。したがって、ノード(ルート自体)が1つある場合、height = 1空のツリー:0

また、ノードの深さまたはレベルは、ルートノードからそのノードまでのエッジの数です。したがって、ルートの深さは0です。

このように、木の最大の深さは木の高さより1つ少なくなります。

0
SunilDwivedi