.数据结构与算法6.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.数据结构与算法6

; Chap 6  树(二);§1 树与森林 ;1.1 树的存储结构 ;1. 父结点数组表示法;A;2. 左孩子右兄弟表示法;;;;1.2 树的实现 ;2.树类 ;3. 基本操作的算法;算法6.1 SetCurNode 功能:设置当前结点;bool CurNode(TreeNode *r, Type e) {//在根为r的树中查找值为e的结点,将其设置为当前结点 if(r==NULL)return FALSE; if(r-data==e){ current=r; return TRUE;} if(CurNode(r-leftChild, e)==TRUE) //递归遍历r的左孩子 return TRUE; TreeNode *p=r-rightSibling; while(p!=NULL){ //递归遍历r的右兄弟 if(CurNode(p, e)==TRUE) return TRUE; p=r-rightSibling;} return FALSE; };算法6.3 ParentElem 功能:查找父结点并读取其元素;算法6.4 Parent 功能:查找父结点; while(sp!=NULL){ if(sp==k){ current=r; return TRUE; } //右兄弟的孩子的递归查找 if(Parent(sp-leftChild, k)==TRUE) return TRUE; sp=sp-rightSibling; } return FALSE; } ;算法6.5 LeftChild 功能:查找左孩子;算法6.6 RightSibling 功能:查找右兄弟;算法6.7 AddNewChild 功能:添加孩子;算法6.8 AddChild 功能:添加孩子;void AddChild(TreeNode *x, Type e) { //为结点x添加元素为e的孩子  TreeNode *p=new TreeNode, *t;  p-data=e;  p-leftChild=p-Sibling=NULL;  if(x-leftChild==NULL)   x-leftChild=p;  else{    t=x-leftChild;    while(t-rightSibling!=NULL)     t= t-rightSibling;    t-rightSibling=p;    } };算法6.9 InsertLeftChild 功能:插入左孩子;算法6.10 AddRightSibling 功能:添加右兄弟;算法6.11 InsertSibling 功能:插入右兄弟;1.3 树与森林的遍历 ;1. 树的深度优先遍历;;算法6.12 PreTreeOrder 功能:树的先序深度优先遍历 ;2.广度优先遍历;3. 森林的遍历;;1.4 森林与二叉树的转换;1. 树转化为二叉树 ;;2. 森林转化为二叉树;;; §2 哈夫曼树 ;2.1 哈夫曼树的应用 ;;;;;2.2 哈夫曼树的基本概念;;;;;2.3 哈夫曼树的构造算法;;2.4 哈夫曼编码 ;;;;;;2.5 哈夫曼树类的实现;;;2. 哈夫曼树类的定义 ; templatetypename Type  class HfmTree{ //哈夫曼树类  private:   HfmNode *forest; //哈夫曼树结点数组,用于构造并保存哈夫曼树   int size;     //待编码的符号个数(叶子结点个数)     HfmCode *hfm_code; //哈夫曼编码数组   int MinTree(int pos); //查找森林中的最小树  public:    HfmTree(int n){ // n为待编码的符号个数 size=n; forest=new HfmNodeType[size*2-1]; //为森林分配空间    hfm_code=new HfmCodeType[size]; //为编码数组分配空间 } ~HfmTree(){delete[]forest;} void MakeHfmTree(Type *datas, int *w); //构造哈夫曼树

文档评论(0)

maxmin + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档