当前位置: 首页 > news >正文

做网站需要知道的问题滕州百度推广

做网站需要知道的问题,滕州百度推广,神秘入口,discuz 企业网站 模板一、哈夫曼树概念 哈夫曼树又称最优树给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大…

一、哈夫曼树概念

        哈夫曼树又称最优树给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

         例给定一个有序数组{3,5,6,9,10},构造出一个哈夫曼树如下:

       树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL

        WPL = (3+5)*4 +  6*3 + 9*2 +10*1 = 98

二、实现代码

1、定义树结点

typedef struct huffmantreenode
{int*  data;struct huffmantreenode*  leftNode;struct huffmantreenode*  rightNode;
} HuffmanTree;

2、声明函数操作

/***创建节点
*/
HuffmanTree*  create_huffman_tree(int data);/*** 初始化哈夫曼根节点
*/
HuffmanTree*  create_huffman_tree_root(int first,int second);/*** 新增节点
*/
void  insert_huffmantree_node(HuffmanTree** tree,int data);/*** 前序遍历
*/
void  pre_oder_huffmantree(HuffmanTree** tree);/*** 销毁树
*/
void  destroy_huffmantree(HuffmanTree* tree);

3、函数定义


HuffmanTree*  create_huffman_tree(int data)
{HuffmanTree* node = malloc(sizeof(HuffmanTree*));if(node==NULL){perror("节点点申请内存失败");return NULL;}node->data = malloc(sizeof(int*));*(node->data) = data;node->leftNode = NULL;node->rightNode = NULL;return node;
}HuffmanTree*  create_huffman_tree_root(int first,int second)
{HuffmanTree*  firstNode = create_huffman_tree(first);HuffmanTree*  secondNode = create_huffman_tree(second);HuffmanTree*  root = create_huffman_tree(first+second);root->leftNode  = firstNode;root->rightNode = secondNode;return root;
}void  insert_huffmantree_node(HuffmanTree** tree,int data)
{HuffmanTree* root  =  *tree;if(root==NULL){perror("初始结点为空");return;}int rootData = *(root->data);HuffmanTree*  node = create_huffman_tree(data);   HuffmanTree*  newRoot = create_huffman_tree(data+rootData);  bool isLeft = rootData<data;newRoot->leftNode =  isLeft?root:node;newRoot->rightNode = isLeft?node:root;*tree =  newRoot;
}void  pre_oder_huffmantree(HuffmanTree** tree)
{HuffmanTree* curNode = *tree;if(curNode==NULL){return;}printf("前序遍历sort=%d\n",*(curNode->data));pre_oder_huffmantree(&(curNode->leftNode));pre_oder_huffmantree(&(curNode->rightNode));
}void  destroy_huffmantree(HuffmanTree* tree)
{if(tree==NULL){return;}destroy_huffmantree(tree->leftNode);destroy_huffmantree(tree->rightNode);free(tree);
}

4、测试函数


void  test_huffmantree()
{int  arr[] = {3,5,6,9,10};HuffmanTree*  root = create_huffman_tree_root(arr[0],arr[1]);int i = 2;for(;i<5;i++){insert_huffmantree_node(&root,arr[i]);}pre_oder_huffmantree(&root);destroy_huffmantree(root);
}

http://www.qdjiajiao.com/news/1648.html

相关文章:

  • WordPress说说心情南京seo网站优化
  • 网站建站平台排行榜谷歌关键词工具
  • 免费版vesta安装WordPress小红书seo关键词优化多少钱
  • 丽水 网站建设互联网运营推广公司
  • 网站需求设计文档百度不收录网站
  • wordpress 修改页面google优化推广
  • 沈阳网站建设024w百度收录哪些平台比较好
  • 网站首页图片滚动百度知道答题赚钱
  • 做网站需要哪些条件太原网站建设方案咨询
  • 烟台做网站优化哪家好seo外链发布
  • 网站设计与网页制作项目教程微信公众号推广软文案例
  • 精美 企业网站模板自己的网站
  • 做高端网站的网络公司现在推广引流什么平台比较火
  • 网站彩票做号seo营销优化软件
  • 做游戏类型的网站的好处百度官网链接
  • 中学建设校园网站方案账号权重查询入口
  • 公司网站建设的项目工作分解结构千川推广官网
  • 网站企业模板国外网站排名 top100
  • 外省住房和城乡建设厅网站建网站软件
  • 专业网站建设微信商城开发网络营销策划创意案例点评
  • wordpress支付插件seo优化费用
  • 泰达建设集团网站淘宝指数转换工具
  • 合肥网约车从业资格证seo短视频入口
  • 外贸网站如何引流怎么做小说推广挣钱
  • 怎么查看网站收录sem竞价账户托管
  • 零基础学习网站开发四大营销策略
  • 网站费用明细搜狗收录提交
  • 1688成品网站源码网站推广的基本方法
  • 赣州找工作最新招聘企业seo的措施有哪些
  • 在那可以做公司网站百度关键词排名提升工具