C 如何计算二叉树的平均高度?
二叉树的平均高度等于每个节点的高度之和除以总节点数 但是,如何计算每个节点的高度之和?我们是否也必须包括离开节点?并且,离开节点的高度是否为1 用例子进行彻底的解释会很好 例如,二叉树如下所示:C 如何计算二叉树的平均高度?,c,data-structures,binary-tree,C,Data Structures,Binary Tree,二叉树的平均高度等于每个节点的高度之和除以总节点数 但是,如何计算每个节点的高度之和?我们是否也必须包括离开节点?并且,离开节点的高度是否为1 用例子进行彻底的解释会很好 例如,二叉树如下所示: 1 2 9 0 3 4 10 ans应为1.4285 从leave节点开始,我总共得到: 1+1+1+1+2+2+3=11 所以我得到的平均高度是=11/7,不等于1.4285。 我在这里做错了什么?您已经找到了答案,但为了进一步参考,这里有一些代码可以计
1
2 9
0 3 4 10
ans应为1.4285
从leave节点开始,我总共得到:
1+1+1+1+2+2+3=11
所以我得到的平均高度是=11/7,不等于1.4285。
我在这里做错了什么?您已经找到了答案,但为了进一步参考,这里有一些代码可以计算
c#
中的平均高度,它使用递归:
namespace AverageHeight
{
public class tree
{
public tree left;
public tree right;
}
class Program
{
static int count = 1;
static void Main(string[] args)
{
var tree = new tree()
{
left = new tree() { left = new tree(), right = new tree() },
right = new tree() { left = new tree(), right = new tree() }
};
var avg = (decimal)Height(tree, 0) / count;
}
static int Height(tree t, int l)
{
if (t.left != null) count++;
if (t.right != null) count++;
return l + (t.left != null ? Height(t.left, l + 1) : 0) +
(t.right != null ? Height(t.right, l + 1) : 0);
}
}
}
这是一本描述和解释二叉树和其他简单树的平均高度的好杂志。作者:Philippe Flajolet和Andrew Odlyzko。希望这有帮助!高度==到根节点的距离。我想我明白了!高度=距根节点的距离,因此距第一个(非常左的节点)的高度=2。因此,2+2+2+2+1+1=10@没错。所以它是10/7=1.4285