- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 chapter 82 树和二叉树
◆ 应用3:查找二叉树( P183) 【问题描述 】 在t为根结点指针的二叉树中查找数据元素x。若查找到数据元素x时,返回该结点的指针;若查找不到数据元素x时,返回空指针。 基本思想:首先在根结点查找,然后在左子树查找。当一个分支上的结点全部比较完仍未查找到数据元素x时,要返回到该结点的双亲结点处,继续在其右子树继续试探、查找。 ? ? 8.4.3 二叉树遍历的应用 BiTreeNode *Search (BiTreeNode *bt, DataType x) { BiTreeNode *p; if (bt == NULL) return NULL;//递归终止条件 if (bt-data == x) return bt; //查找成功出口1 if (bt-leftChild != NULL) { p = Search (bt-leftChild, x); if (p != NULL) return p;//查找成功出口2 } if (bt-rightChild != NULL) { p = Search (bt-rightChild, x); if (p != NULL) return p;//查找成功出口3 } ? return NULL;//查找失败出口 } 作业8 1、概念题:P206-208,8-6、 8-20、 8-18、8-25(并证明) 补充证明: 一棵具有n个结点的非空二叉树具有n+1个空子树(指针)。 2、算法设计题: Height()函数实现求二叉树的高度; NodeNum()函数实现求二叉树结点总数; MakeTree()函数已知二叉树前序序列和中序序列,采用递归算法实现构造二叉树。 所有结点按层次顺序依次存储在一片连续的存储单元中,则根据一个结点的存储地址就可算出它的左右子女,父母的存储地址,就好像明显地存储了相应的指针一样 * 对结点的处理工作是在其诸孩子结点被处理之前进行 * printf(%d\t,bt-data); * 先删除在访问被删结点 A final thought: if you use a stack instead of a queue, and push each nodes children in reverse order--from right to left (so they pop off the stack in order from left to right)--you perform a preorder traversal. Think about why. * * ?** if (n = 0) 考虑可删除 * (注意该算法与其它遍历算法的不同,思考:递归终止条件) 回溯法也叫试探法,每次试着往前走,一直走到不通,然后撤回,重新试探。搜索算法,和常规递归算法不同的是,此算法当一个分支上的结点比较完仍未查找到数据元素x时,要返回到该结点的双亲结点处继续查找。 8-18、8-31(结点)、8-33 * 上堂课要点回顾 树 定义及基本术语 ADT 存储结构 双亲表示法 孩子链表表示法 双亲孩子表示法 孩子兄弟表示法 二叉树 定义 ADT 性质 第 九 次 课 阅读: 朱战立,第175-185页 习题: 作业8 数据结构课程内容 二叉树 8.3.1 二叉树的存储结构 顺序存贮结构 在处理过程中,二叉树的大小和形状不发生激烈的动态变化时,可以采用顺序方法存储 用顺序方法存储二叉树,就是要把所有结点按照一定的次序顺序存储到一片连续的存储单元中 适当安排这个结点的线性序列,可以使结点在序列中的相互位置反映出二叉树结构的部分信息 但一般这样的信息不足以刻画整个结构,还要在结点中附加一些其它必要信息以完全反映整个结构 8.3 二叉树的设计和实现 按层次顺序将一棵n个结点的完全二叉树的所有结点从0到n-1编号,就得到结点的一个线性序列 完全二叉树结点的层次序列足以反映二叉树结构 性质五 存储完全二叉树的最简单,最节省空间的存储方式 完全二叉树的顺序存储,在存储结构上是线性的,但在逻辑结构上它仍然是二叉树型结构 完全二叉树的顺序存储结构 A B C D E F G H 0 1 2 3 4 5 6 7 t[8] F E H C D B A G ? 存入tree[15]中: A ? B
文档评论(0)