- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[2018年最新整理]二叉树的周游
5.2.1 抽象数据类型 在二叉树的抽象数据类型中,定义了二叉树基本操作的集合,在具体应用中可以以此为基础进行扩充 为了强调抽象数据类型与存储无关,在此并没有具体规定该抽象数据类型的存储方式 5.2.2 深度优先周游二叉树 5.2.2 深度优先周游二叉树 基于二叉树的递归定义,这三种深度优先周游的递归定义 (1) 前序法(tLR次序,preorder traversal)。其递归定义是 访问根结点; 按前序周游左子树; 按前序周游右子树。 (2) 中序法(LtR次序,inorder traversal)。其递归定义是 按中序周游左子树; 访问根结点; 按中序周游右子树。 (3) 后序法(LRt次序,postorder traversal)。其递归定义是 按后序周游左子树; 按后序周游右子树; 访问根结点。 5.2.2 深度优先周游二叉树 深度周游如下二叉树 前序序列是:A B D E G C F H I 中序序列是:D B G E A C H F I 后序序列是:D G E B H I F C A 5.2.2 深度优先周游二叉树 二叉树的周游算法与表达式的“前缀”和“后缀”表示法之间有着密切的联系。例如图5.6是表达式A+B×(C+D)的二叉树表示。按照前序方式周游,运算符出现在前面,参与运算的对象紧跟在其后,这样就形成了前缀表达式(波兰式): + A × B + C D 按照中序方式周游,得到的结果是去掉括号的中缀表达式: A + B × C + D 下面是后序方式周游的结果,得到的是后缀表达式(逆波兰式): A B C D + × + 先序遍历递归算法 【算法5.3】 深度优先周游二叉树或其子树 templateclass T void BinaryTreeT::PreOrder (BinaryTreeNodeT *root) { // 前序周游二叉树或其子树 if (root != NULL) { Visit(root-value()); // 访问当前结点 PreOrder(root-leftchild()); // 前序周游左子树 PreOrder(root-rightchild()); // 前序周游右子树 } } 先序遍历的非递归实现 先序遍历的非递归实现 先序遍历的非递归实现 templateclass T void BinaryTreeT::PreOrderWithoutRecursion(BinaryTreeNodeT *root) { using std::stack; // 使用STL中的栈 stackBinaryTreeNodeT* aStack; BinaryTreeNodeT *pointer = root; aStack.push(NULL); // 栈底监视哨 while (pointer) { // 或者!aStack.empty() Visit(pointer-value()); // 访问当前结点 if (pointer-rightchild() != NULL) // 非空右孩子入栈 aStack.push(pointer-rightchild()); if (pointer-leftchild() != NULL) pointer = pointer-leftchild(); // 左路下降 else { // 左子树访问完毕,转向访问右子树 pointer=aStack.top(); // 获得栈顶元素 aStack.pop(); // 栈顶元素退栈 } } } 中序遍历
您可能关注的文档
- [2018年最新整理]乘风破浪顺势而行.doc
- [2018年最新整理]九下语文试卷.doc
- [2018年最新整理]九年级U10知识点.ppt
- [2018年最新整理]乘除运算中的误差分析.doc
- [2018年最新整理]九年级3-8知识点.ppt
- [2018年最新整理]九年级上册单项选择综合练习答案(Unit1).ppt
- [2018年最新整理]九年级上册复习提纲.doc
- [2018年最新整理]九年级上册数学北京课改版备课精品课件:《比例线段》.ppt
- [2018年最新整理]九年级上册数学认识一元二次方程教学知识点练习3.doc
- [2018年最新整理]九年级专项复习-单项选择之动词.doc
- 上海海洋大学《海洋环境分析技术》课件-21化学发光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-20分子荧光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-22色谱分离过程.pdf
- 上海海洋大学《海洋环境分析技术》课件-25气相色谱仪与固定液.pdf
- 上海海洋大学《海洋环境分析技术》课件-24色谱定性定量方法.pdf
- 上海海洋大学《海洋环境分析技术》课件-26气相色谱检测器.pdf
- 上海海洋大学《海洋环境分析技术》课件-29液相色谱固定相与流动相.pdf
- 上海海洋大学《海洋环境分析技术》课件-27气相色谱分离条件的选择.pdf
- 上海海洋大学《海洋环境分析技术》课件-28液相色谱仪器与类型.pdf
- 上海海洋大学《海洋环境分析技术》课件-3 原子光谱和分析光谱.pdf
文档评论(0)