第5章 树和二叉树(g).ppt

  1. 1、本文档共103页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 树和二叉树(g)

Free template from DeleteL 前置条件:二叉树已存在 输入:指针parent 功能:在二叉树中删除结点parent的左子树 输出:无 后置条件:如果删除成功,得到一个新的二叉树 Search 前置条件:二叉树已存在 输入:数据值x 功能:在二叉树中查找数据元素x 输出:指向该元素结点的指针 后置条件:二叉树不变 PreOrder 前置条件:二叉树已存在 输入:无 功能:前序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 InOrder 前置条件:二叉树已存在 输入:无 功能:中序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 PostOrder 前置条件:二叉树已存在 输入:无 功能:后序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 LeverOrder 前置条件:二叉树已存在 输入:无 功能:层序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 endADT 哈夫曼树的特点: 1. 权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。 2. 只有度为0(叶子结点)和度为2(分支结点)的结点,不存在度为1的结点. 1. 编写非递归算法,求二叉树中叶子结点的个数。 2. 已知某字符串S为“abcdeacedaeadcedabadadaead” ,对该字符串用[0,1]进行前缀编码,问该字符串的编码至少有多少位。 struct BiNode { T data; T *lchild, *rchild; }; 5.4 二叉树的存储结构及实现 lchild data rchild 左孩子结点 右孩子结点 二叉链表 G F E D B A A B C D E F G ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ C 二叉链表 5.4 二叉树的存储结构及实现 具有n个结点的二叉链表中,有多少个空指针? G F E D B A A B C D E F G ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ C 二叉链表 5.4 二叉树的存储结构及实现 具有n个结点的二叉链表中,有n+1个空指针。 前序遍历——递归算法 void PreOrder(T *root) { if (root ==NULL) return; else { coutroot-data; PreOrder(root-lchild); PreOrder(root-rchild); } } 5.4 二叉树的存储结构及实现 A G B C D F E 5.4 二叉树的存储结构及实现 前序遍历算法的执行轨迹 中序遍历——递归算法 void InOrder (T *root) { if (root==NULL) return; else { InOrder(root-lchild); coutroot-data; InOrder(root-rchild); } } 5.4 二叉树的存储结构及实现 后序遍历——递归算法 void PostOrder(T *root) { if (root==NULL) return; else { PostOrder(root-lchild); PostOrder(root-rchild); coutroot-data; } } 5.4 二叉树的存储结构及实现 层序遍历 5.4 二叉树的存储结构及实现 A B C D E F G 遍历序列: A A B C B D C E F G D E F G 层序遍历 队列Q初始化; 2. 如果二叉树非空,将根指针入队; 3. 循环直到队列Q为空 3.1 q=队列Q的队头元素出队; 3.2 访问结点q的数据域; 3.3 若结点q存在左孩子,则将左

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档