文章
54
粉丝
12
获赞
0
访问
5.5k
(1)采用递归遍历二叉树的方式计算 WPL:
(2)二叉树结点的数据类型定义(4 分)
typedef struct BiTNode {
int weight; // 结点的权值,叶结点有实际意义
struct BiTNode *left; // 指向左子树的指针
struct BiTNode *right; // 指向右子树的指针
} BiTNode, *BiTree; // BiTNo
(3) 算法描述(C 语言,递归实现)
int WPL = 0; // 全局变量,存储带权路径长度的总和
void CalculateWPL(BiTree root, int depth) {
if (root == NULL) { // 空节点,直接返回
return;
}
// 若为叶节点(左右子树均为空),累加“权值×深度”到WPL
if (root->left == NULL && root->right == NULL) {
WPL += root->weight * depth;
}
// 递归遍历左子树,深度+1
CalculateWPL(root->left, depth + 1);
// 递归遍历右子树,深度+1
CalculateWPL(root->right, depth + 1);
}
// 调用示例(假设已构建二叉树root):
// int main() {
// BiTree root; // 需先通过创建节点、连接左右子树来构建二叉树
// CalculateWPL(root, 0); // 根节点初始深度为0(若认为根深度为1,可传1)...
登录后发布评论
暂无评论,来抢沙发