首页 > 试题广场 >

(13分)二叉树的带权路径长度(WPL)是二叉树中所有叶结点

[问答题]
(13 分)二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储,结点结构为:
                                           
其中叶结点的weight域保存该结点的非负权值。设root为指向T 的根结点的指针,请设计求T的WPL 的算法,要求: 

1) 给出算法的基本设计思想;

2) 使用C 或C++语言,给出二叉树结点的数据类型定义;

3)   根据设计思想,采用C 或C++语言描述算法,关键之处给出注释。

int wpl(tree *root,int n)
{
    if(root==null)return 0;
    if(root->left==null&&root->right==null)return root->weight*n;
    return wpl(root->left,n+1)+wpl(root->right,n+1);
}
int main_wpl(tree *root)
{
    return wpl(root,0);
}

发表于 2021-12-17 14:48:05 回复(0)
利用层次遍历,设置一个level表示层次,两个工作指针p,q分别用于指向当前访问节点和每层次最后一个节点就可以计算出wpl了。
发表于 2020-09-30 17:06:22 回复(0)