You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历哈夫曼树并获取所有符号的编码?

哈夫曼树遍历递归函数解析与实现

我写了一个递归函数用来遍历哈夫曼树,目的是生成包含所有符号编码的字符串。下面是具体的实现和逻辑说明:

函数代码

private void BypassLCR(HuffmanTree node, ref string result) 
{
    if (node.Symbol != '\0') 
    {
        result += string.Format(" -> {0}| ", node.Symbol);
        return;
    }
    string last = result;
    result += "0";
    BypassLCR(node.Left, ref result);
    last += "1";
    result += last;
    BypassLCR(node.Right, ref result);
}

关键逻辑说明

  • 叶子节点判断:当节点的Symbol属性不等于'\0'时(非叶子节点默认Symbol为'\0'),说明这是一个包含有效符号的叶子节点,此时会将符号格式化后追加到结果字符串中,然后返回结束当前递归分支。
  • 非叶子节点处理:
    1. 先保存当前的结果字符串到临时变量last中
    2. 给结果字符串追加"0",代表遍历左子树的编码位,然后递归遍历左子节点
    3. 给之前保存的last追加"1",代表遍历右子树的编码位,将这个新字符串追加到结果中
    4. 最后递归遍历右子节点

这个函数通过递归的方式,沿着哈夫曼树的左右分支分别添加0和1的编码标识,最终把所有叶子节点的符号和对应的编码路径整合到结果字符串里。

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:42:33