作业帮 > 数学 > 作业

求哈夫曼树的带权路径长度 算法

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:数学作业 时间:2024/05/02 06:34:54
求哈夫曼树的带权路径长度 算法
求哈夫曼树的带权路径长度 算法
1, T->lchild == NULL && T->rchild == NULL //叶节点
2, n + T->weight * h //加上当前叶节点的带权路径长度
3, WPL(T->lchild, h+1) //遍历左子树
4, WPL(T->rchild, h+1) //遍历右子树
再问: h好像不对哦,你这样,在遍历过第一个叶节点之后,h一直在不断累加的
再答: h是当前节点到根节点的路径长度,h和T参数是对应的,每次调用WPL,T指向它的一个孩子,h是要加1的。由于是递归调用,当右子树递归结束时,h的值会恢复到调用之前的值,继续在其左子树递归!这两行: 3, WPL(T->lchild, h+1) //遍历左子树 4, WPL(T->rchild, h+1) //遍历右子树 两个h+1的值是相等的。形式上跟二叉树的中序遍历很相似,可参考下数据结构教材。希望采纳,如有问题,欢迎继续交流!