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

合肥专业做网站公司有哪些资源猫

合肥专业做网站公司有哪些,资源猫,h网站建设,房地产网站开发文档一、哈夫曼树概念 哈夫曼树又称最优树给定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.ds6.com.cn/news/88337.html

相关文章:

  • 网站备案号是什么意思什么是整合营销概念
  • 网站制作软件都是什么软件如何优化关键词的方法
  • 品牌建设三年行动方案亚马逊seo什么意思
  • 公司网站需求分析跨境电商网站开发
  • 如何做网站的二级页面关键词大全
  • 做黄网站赚钱吗搜索引擎调词工具
  • 河北省建设信息中心网站郑州seo技术服务
  • 简单恶搞编程代码搜索引擎排名优化
  • 青岛景点盐城网站优化
  • 大学生可以做的网站google官网下载
  • 网站建设公司十年乐云seo外国网站怎么进入
  • 2019网站seo百度地图导航手机版免费下载
  • 晋城网站seo河北关键词seo排名
  • 制作网站的模板下载重庆seo优化推广
  • 易优建站上海app开发公司
  • wordpress值得买主题网站外链优化方法
  • 网站各个级别建设费用自己怎么做游戏推广赚钱
  • 北京门户企业网站建设微博营销成功案例8个
  • 高端的网站优化公司seo诊断站长
  • 旅行社网站建设规划的内容网络媒体推广报价
  • 手机网站代码网站排名优化专业定制
  • 网站证书怎么做沈阳网站关键词优化公司
  • 建设一个视频网站需要什么条件电商网站平台搭建
  • 做网站 蓝洋成都网站维护
  • 济宁做网站哪家比较好seo关键词优化是什么意思
  • 网络宣传策划方案模板陕西seo公司
  • 做系统网站信息检索网站百度广告投放公司
  • java做软件的网站91永久海外地域网名
  • 织梦网站模板免费下载成都网站设计
  • 西部数码网站备案制作app软件平台