C++信号放大器
(1) 运用二叉树的定义将左孩子、右孩子、结点值、权值即与父结点的衰减量、以及当前结点的最大衰减量联系起来。
(2) 设置信号放大器函数
该函数主要实现判断是否超过容忍值并在合适位置放置信号放大器使其数量最少。
首先将当前结点最大衰减量D初始化,当只有右子树时即左子树为空,计算出当前结点的最大衰减量,判断当超过容忍值时则放置信号放大器并输出;当只有左子树时即右子树为空,计算出当前结点的最大衰减量,判断当超过容忍值时则放置信号放大器并输出;当左右子树都存在并左子树的衰减量大于右子树时则计算当前结点最大衰减量D并判断是否超过容忍值并输出,继续进一步比较其右子树的当前最大衰减量与右子树的衰减量之和和其左子树的衰减量,若大于则更新D,并判断是否超过容忍值并输出,再进一步比较其右子树的衰减量与其左子树的衰减量,若大于则再更新D;当左右子树都存在且右子树的衰减量大于左子树时,比较方法与前者相似,颠倒左右即可。
通过此算法可将放置的放大器数目最少。
(3) 主函数
主函数中包括输入信息时的声明及相关函数的调用。
四 调试分析
该程序在设置信号放大器的比较算法上有些麻烦,需要进行很多比较。结点信息的输入也比较麻烦,很浪费时间,还有就是输出结果时最好将二叉树的具体结构一同输出便于检查,并且形象直观。
1