我有一个问题:四叉树是根据原始构造函数baseQT(value)定义的,它返回一个带有标签值的单节点四叉树和makeQT(luqt,ruqt,llqt,rlqt),它们构建一个四叉树四个组成四 树木; llqt; ruqt; rlqt,选择器lu(qt),ll(qt),ru(qt)和rl(qt),以及条件isValue(qt),如果四叉树qt是单个节点,则返回true。写一个伪代码averagevalue(qt),它使用上面的原始四叉树算子, 返回四叉树所有节点的平均值。
因此,如果我将四叉树定义为makeQT(0,10,20,30),那么它应该返回15,因为60/4是15。
到目前为止我所做的是这个,但我不知道如何使用递归来到四叉树的每个节点来使用它来计算平均值。任何人都可以帮我如何在else语句之后编写代码吗?
Int acc=0, int nodes=0;
averagevalue(qt,acc,nodes) {
if ( isValue(qt) )
return ((qt)+acc)/(nodes+1)
else
}
答案 0 :(得分:0)
你需要编写一个递归函数来对值进行求和和计数,然后计算平均值。您可能需要为此编写辅助函数。例如:
// global variables
sum
count
averageValue(qt)
{
sum = 0
count = 0
sumAndCount(qt);
return sum/count;
}
sumAndCount(qt)
{
if (qt != null)
{
sumAndCount(qt->luqt);
sumAndCount(qt->ruqt);
sumAndCount(qt->llqt);
sumAndCount(qt->rlqt);
sum += qt->value
++count
}
}