2014,计算二叉树带权路径长度

Posted yangmenda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2014,计算二叉树带权路径长度相关的知识,希望对你有一定的参考价值。

思想:基于先序遍历,用一个静态变量保存WPL把每个节点的深度作为参数传递

若为叶子结点,WPL=该节点深度*权值,若非叶子节点则递归调用

代码:

typedef struct BTNode
{
    int weight;
    struct BTNode *lchild,*rchild;

}BTNode,*BTree;
int WPL(BTree root)
{
    return WPL_CORE(root,0);
}
int WPL_CORE(BTree root,int deep)
{
    static wpl=0;
    if(root->lchild==NULL&&root->rchild==null)
        wpl+=deep*root->weight;
    if(root->lchild!=NULL)
        WPL_CORE(root->lchild,deep+1);
    if(root->rchild!=NULL)
        WPL_CORE(root->lchild,deep+1);
    return wpl;

}

 

以上是关于2014,计算二叉树带权路径长度的主要内容,如果未能解决你的问题,请参考以下文章

哈夫曼树的介绍 ---java实现

二叉树的带权路径长度WPL算法实现

哈夫曼树+带权路径长度计算

踩过无数坑实现的哈夫曼压缩(JAVA)

数据结构(赫夫曼树)

数据结构(赫夫曼树)