深度与树的高度。刷新基本面

时间:2011-12-11 15:02:19

标签: algorithm data-structures tree computer-science

我正在复习算法和数据结构。

我对树的深度高度的概念感到困惑。在许多情况下,特别是在关注面试评估的网站上,在我看来,这些术语可以互换使用。

在我看来,基础文献将它们定义为适用于树的节点

因此根(作为节点)的深度为0。根(或任何子节点)的高度是其子节点的最大高度。

但是当你在树上应用这些术语,即找到树的最大深度时,似乎这些术语现在是“无意义的”并且可以互换使用,即找到最大深度只计算最大高度。

例如在这篇文章Check if tree is balanced中,答案集中在树的高度,而平衡的定义可能在树的深度上

我的理解是正确还是我搞砸了这些基本原理?

9 个答案:

答案 0 :(得分:9)

在谈论树时,它们的意思相同:从根节点到叶节点的最长路径的长度。

答案 1 :(得分:7)

depth 通常用于描述树节点的属性,而 height 用于描述整个树的属性,如下例所示:

  • 根节点的深度为零
  • 节点X的深度为N
  • 树的高度是M

树的高度定义为其最深节点的深度。

答案 2 :(得分:4)

深度是“节点有多深”[或者距离根有多远]。高度是“树有多高”[或者离它的最远的叶子有多远]

形式上:

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

编辑:当提到最大深度概念时,它与树的高度相同[在根处最大],你可以通过归纳证明它。

答案 3 :(得分:4)

节点的高度是从该节点到叶子的最长向下路径的长度。根的高度是 树的高度

节点的深度是其根路径的长度(即其根路径)。这在操纵各种自平衡树,特别是AVL树时通常是需要的。根节点具有深度零,叶节点具有高度零,并且仅具有单个节点的树(因此根和叶)具有深度和高度零。通常,空树(没有节点的树,如果允许的话)具有深度和高度-1。

答案 4 :(得分:0)

树的高度是遵循最长路径的从根到叶的节点数。 因此,如果我们有一个节点(root本身)height = 1 空树:0

任何节点的深度或级别是从根节点到该节点的边数。 所以..根的深度是0。

这样,树的最大深度比树的高度小一个。

答案 5 :(得分:0)

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;
}

答案 6 :(得分:0)

节点深度:是从根到节点的路径长度。 节点的高度:是从节点到最内层节点(叶子)的路径长度。

但是树的高度和深度是相同的。 树的高度=树的深度=最大高度=最大深度。

答案 7 :(得分:0)

在二进制搜索树中

  1. 节点的高度:#从节点到叶子的最长简单向下路径上的边缘
  2. 树的高度:根的高度
  3. 节点的深度:从根到节点的简单路径(#edges)的长度

答案 8 :(得分:0)

节点的高度是参考Leaf - 从源节点到叶节点的最长路径的长度。

节点的深度是参考根节点。 - 从源节点到根的总长度

但是当你一般性地谈论整棵树都指的是同一个时,它只有你在树中采用一个特定的节点才有所不同