文章
59
粉丝
0
获赞
1
访问
12.2k
(1)设定总权值为sum,树的结点数为n,设置左右边节点为l与r,从根节点开始,采用先序遍历方法,若该节点左右子树不全为空,则先将该节点权值增加weight,再往下遍历
(2)
typedef struct Bit-Tree
{int weight;
struct Bit-Tree *left;
struct Bit-Tree *right;
}tree, *root;
(3)
int sum=0;
void PreOrder(tree* root)
{
if(root!=NULL)//根节点不为空,说明该节点有路径
{
sum+=weight;
PreOrder(root->left);//递归遍历左子树
PreOrder(root->right);//递归遍历右子树
}
}
评分及理由
(1)得分及理由(满分3分)
得分:1分
理由:学生的基本设计思想描述不清晰,没有明确说明如何计算带权路径长度(WPL),仅提到了先序遍历和权值累加,但未涉及叶子节点的深度与权值的乘积。部分思路正确但不完整。
(2)得分及理由(满分4分)
得分:3分
理由:数据类型定义基本正确,但结构体名称“Bit-Tree”中使用了非法字符“-”,应为“BiTNode”或“BiTree”。其他部分符合要求。
(3)得分及理由(满分6分)
得分:2分
理由:算法实现存在严重逻辑错误。代码中未正确处理叶子节点的判断,且未考虑深度参数,导致无法正确计算WPL。此外,变量“weight”未正确引用(应为root->weight)。递归遍历部分正确,但核心逻辑错误。
题目总分:1+3+2=6分
登录后发布评论
暂无评论,来抢沙发