降彼此的承诺铭记在心 2023-04-20 13:33 采纳率: 40%
浏览 269
已结题

哈夫曼树输出算法(递归横向输出)

(2)哈夫曼树输出算法;
(提示:递归横向输出函数:void PrintBTNode(HuffNode *hf, int index,int n){)

  • 写回答

2条回答 默认 最新

  • 守时间的孤岛 2023-04-20 15:22
    关注

    该回答引用chatgpt:

    #include<iostream>
    using namespace std;
    
    struct HuffNode{
        int weight; // 权值
        int parent; // 双亲结点下标
        int lchild; // 左孩子下标
        int rchild; // 右孩子下标
    };
    
    // 打印节点函数
    void PrintBTNode(HuffNode *hf, int index,int n){
        // 若节点为空则返回
        if (hf == NULL) return;
        // 递归输出右子树
        PrintBTNode(hf, hf[index].rchild, n + 5);
        // 输出节点
        for (int i = 0; i < n; i++) cout << " ";
        cout << hf[index].weight << endl;
        // 递归输出左子树
        PrintBTNode(hf, hf[index].lchild, n + 5);
    }
    
    int main(){
        // 创建哈夫曼树
        HuffNode huffman[6] = {{5,-1,-1,-1},{6,-1,-1,-1},{8,-1,-1,-1},{9,-1,-1,-1},{11,-1,-1,-1},{14,-1,-1,-1}};
        for(int i=0;i<5;i++){
            int min1=100,min2=100;
            int j1=0,j2=0;
            for(int j=0;j<6+i;j++){
                if(huffman[j].weight<min1&&huffman[j].parent==-1){
                    min2=min1;
                    j2=j1;
                    min1=huffman[j].weight;
                    j1=j;
                }else if(huffman[j].weight<min2&&huffman[j].parent==-1){
                    min2=huffman[j].weight;
                    j2=j;
                }
            }
            huffman[j1].parent=huffman[j2].parent=5+i;
            huffman[5+i].weight=huffman[j1].weight+huffman[j2].weight;
            huffman[5+i].lchild=j1;
            huffman[5+i].rchild=j2;
        }
        // 输出哈夫曼树
        cout << "Huffman Tree:" << endl;
        PrintBTNode(huffman, 10, 0);
        return 0;
    }
    Huffman Tree:
                           53
                   27
                           26
           14
                           12
                   11
                           10
       5
                           4
                   3
                           2
    
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部