二叉树的平均高度等于每个节点的高度除以总节点的总和。
但是,如何计算每个节点的高度之和?我们还必须包括离开节点吗?并且,离开节点的高度= 1?
通过示例进行彻底解释会很棒!
例如,使用下面显示的二叉树:
1
2 9
0 3 4 10
ans应为1.4285 从离开节点开始,我总得到: 1 + 1 + 1 + 1 + 2 + 2 + 3 = 11
所以我得到的平均高度= 11/7,不等于1.4285。 我在这做错了什么?
答案 0 :(得分:1)
你已经弄明白了,但是对于进一步的参考,这里有一些代码来计算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);
}
}
}