给出以数据序列{10,2,7,13,9,12,18}为节点权植所构造的哈弗曼树并计算该树的加权路径和长度WPL.

1个回答

  • 1:那么首先取出最小的两个,即2,7.构成以下图案.

    9

    | |

    2 7

    集合便成为了 {7,9,10,12,13,18}

    2:从中选出两个最小的.即 7 ,9.

    即变成 16

    | |

    9 7

    | |

    2 7

    集合即变成了{10,12,13,16,18}

    3:从中选取两个最小的.即 10,12;

    即构成:

    22

    | |

    10 12

    集合即变成了{13,16,18,22}

    4:从中选取两个最小的.即13,16.

    即变成 29

    | |

    16 13

    | |

    9 7

    | |

    2 7

    集合变成了{18,22,29};

    5:同样,取出18,22;

    即构成:

    40

    | |

    22 18

    | |

    10 12

    集合即变成{29,40};

    6:将29,40,联合起来.

    69

    | |

    29 40

    | | | |

    16 13 22 18

    | | | |

    9 7 10 12

    | |

    2 7

    即变成了{69};

    那么就已经完成了.

    可以看到最初的集合里的数都变成了叶子.

    WPL就是用 叶子节点乘以它的层数,然后 累加起来就是啦.

    即(13+18)*2+(7+10+12)*3+(2+7)*4 =205.

    注意:是用 【叶子节点】 乘以 层数.根为第0层.

    参考下我回答过的 参考资料,