- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Free template from 数据结构与算法 作 者:胡明 王红梅 出版社:电子工业出版社 邮 箱:wanghm@ ADT Tree Data 树是由一个根结点和若干棵子树构成, 树中结点具有相同数据类型及层次关系 Operation InitTree 前置条件:树不存在 输入:无 功能:初始化一棵树 输出:无 后置条件:构造一个空树 DestroyTree 前置条件:树已存在 输入:无 功能:销毁一棵树 输出:无 后置条件:释放该树占用的存储空间 PreOrder 前置条件:树已存在 输入:无 功能:前序遍历树 输出:树的前序遍历序列 后置条件:树保持不变 PostOrder 前置条件:树已存在 输入:无 功能:后序遍历树 输出:树的后序遍历序列 后置条件:树保持不变 endADT PreOrder 前置条件:二叉树已存在 输入:无 功能:前序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 InOrder 前置条件:二叉树已存在 输入:无 功能:中序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 PostOrder 前置条件:二叉树已存在 输入:无 功能:后序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 LeverOrder 前置条件:二叉树已存在 输入:无 功能:层序遍历二叉树 输出:二叉树中结点的一个线性排列 后置条件:二叉树不变 endADT 线索:将二叉链表中的空指针域指向前驱结点和后继结点的指针被称为线索; 线索化:使二叉链表中结点的空链域存放其前驱或后继信息的过程称为线索化; 线索链表:加上线索的二叉链表称为线索链表。 哈夫曼树的特点: 1. 权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。 2. 只有度为0(叶子结点)和度为2(分支结点)的结点,不存在度为1的结点. 二叉树前序遍历的非递归算法的关键:在前序遍历过某结点的整个左子树后,如何找到该结点的右子树的根指针。 解决办法:在访问完该结点后,将该结点的指针保存在栈中,以便以后能通过它找到该结点的右子树。 在前序遍历中,设要遍历二叉树的根指针为root,则有两种可能: ⑴ 若root!=NULL,则表明?如何处理? ⑵ 若root=NULL,则表明?如何处理? 前序遍历——非递归算法 6.5 二叉树遍历的非递归算法 访问结点序列: A 栈S内容: B D A B 前序遍历的非递归实现 A D B C 6.5 二叉树遍历的非递归算法 访问结点序列: A 栈S内容: B D A 前序遍历的非递归实现 A D B C D 6.5 二叉树遍历的非递归算法 访问结点序列: A 栈S内容: B D C 前序遍历的非递归实现 A D B C C 6.5 二叉树遍历的非递归算法 1.栈s初始化; 2.循环直到root为空且栈s为空 2.1 当root不空时循环 2.1.1 输出root-data; 2.1.2 将指针root的值保存到栈中; 2.1.3 继续遍历root的左子树 2.2 如果栈s不空,则 2.2.1 将栈顶元素弹出至root; 2.2.2 准备遍历root的右子树; 前序遍历——非递归算法(伪代码) 6.5 二叉树遍历的非递归算法 前序遍历——非递归算法(伪代码) void PreOrder(BiNode *root) { top = -1; //采用顺序栈,并假定不会发生上溢 bt = root; while (bt != NULL || top != -1) { while
文档评论(0)