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

有官网建手机网站论坛推广工具

有官网建手机网站,论坛推广工具,玉林市网站建设,公司做的网站入哪个会计科目一、哈夫曼树概念 哈夫曼树又称最优树给定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.15wanjia.com/news/8583.html

相关文章:

  • 福州市城乡建设委员会门户网站引流推广的句子
  • jsp企业网站开发毕业论文erp123登录入口
  • 东莞百度seo找谁海南seo顾问服务
  • 如何用xampp做网站营销案例网站
  • 开发公司资质审查用假资料后果运城seo
  • 万维网网站服务的名称哪里做网络推广
  • 梅河口建设局网站搜收录网
  • 在线作图网站湖南官网网站推广软件
  • 免费物流公司网站模板seo是付费还是免费推广
  • 17网站一起做网店池尾外贸营销型网站设计
  • 轻量应用服务器做网站自己怎么做游戏推广赚钱
  • 济南行知网站建设最新新闻热点事件2023
  • 微信官方网站 - 百度-百度知乎推广公司
  • 做专利费减是哪个网站网络推广公司简介
  • 响应式相册网站模板在百度怎么发布作品
  • 网站建设提议制作公司网站的步骤
  • 门户网站建设信息化项目背景深圳关键词优化软件
  • 网站建设公司中软文发稿网
  • 重庆点优建设网站公司吗哈尔滨最新信息
  • wordpress怎么加站点图标百度客服中心人工电话
  • 网站关键词几个好百度推广查询
  • 北京做网站浩森宇特企业网站建设方案策划书
  • 2017电商网站建设背景张家界网站seo
  • 绍兴做企业网站的公司北京互联网公司
  • 做公司网站需要准备什么资料网站排名软件有哪些
  • 在线教育网站建设企业中层管理人员培训课程
  • 赌博手机网站制作沈阳百度seo关键词优化排名
  • 刚做的网站关键字能搜到么seo网上课程
  • 保定网站设计公司今天最火的新闻头条
  • 赣州室内设计学校武汉seo招聘信息