思路:
二叉树的后序遍历非递归方法与前序,中序不同,稍微麻烦一些。
要保证根结点在左孩子和右孩子访问之后才能访问,因此对于任一结点cur,先将其入栈。如果cur不存在左孩子和右孩子,则可以直接访问它;或者cur存在左孩子或者右孩子,但是其左孩子和右孩子都已被访问过了,则同样可以直接访问该结点。若非上述两种情况,则将cur的右孩子和左孩子依次入栈,这样就保证了每次取栈顶元素的时候,...
分类:
其他好文 时间:
2016-05-12 16:45:43
阅读次数:
180
要求:二叉树以lson-rson链接方式存储,以菜单方式设计并完成功能任务:建立并存储树、输出前序遍历结果、输出中序遍历结果、输出后序遍历结果、交换左右子树、统计高度,其中对于中序、后序的遍历运算要求采用非递归方式。代码利用C语言描述。//作者:兰州大学13级计算机系hsy//时间:2015.6.1//编程环境:win7-64,codeblocks,GUN-GCC编译器#include#inclu...
分类:
其他好文 时间:
2016-05-12 16:40:06
阅读次数:
388
/************************************************************************/
/*
算法说明:
由中序遍历序列可知,第一个节点是根节点,
由前序遍历序列可知,第一个节点是根节点的左子树节点,而且前序遍历中,根节点左边是左子树,右边是右子树,因此通过中序遍历的根节点可以确定的是:
根节点在前序遍历中的位置(通过遍历前序遍历...
分类:
其他好文 时间:
2016-05-12 16:36:41
阅读次数:
124
题目描述
输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入输入第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。输出可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。每行最后一个数据之后有一个空格。样例输入
5
1 6 5 9 8
样例输出
1 6 5 9 8...
分类:
编程语言 时间:
2016-05-12 16:26:50
阅读次数:
170
1.已知完全二叉树的层次遍历,求其前、中、后序 测试样例: ) 对于例1: 前序遍历:ABDGIJKLCEFH 中序遍历:DIGJLKBAECHF 后序遍历:ILKJGDBEHFCA 对于例2: 前序遍历:eadcbjfghi 中序遍历:abcdjefhgi 后序遍历:bcjdahigfe //用顺 ...
分类:
其他好文 时间:
2016-05-10 09:49:54
阅读次数:
249
1.初识树 首先来看树的几个很重要的概念。节点的度是这个节点所拥有的子树的个数,如果度为0那这个节点称为叶子节点。树的深度是树中所有节点的最大层数,树的度是各节点度的最大值。如果树的各节点的左右子树从左到右是有序的则为有序树,反之为无序树。树的遍历分为前序、中序和后序,树也有很多类型,下面是一些常见 ...
分类:
其他好文 时间:
2016-05-09 01:36:00
阅读次数:
212
题目:从一棵树的前序和中序遍历结果构建一棵树。 前序遍历结果的第一个结点是树的根节点;在中序遍历结果中,根节点的左边是树的左子树,右边是树的右子树。然后再重新确定左子树和右子树的范围,递归寻找左子树和右子树的根节点。 这里需要注意的是递归终止条件:pre_start>pre_end. ...
分类:
其他好文 时间:
2016-05-08 19:53:25
阅读次数:
149
归并排序采用分治法的思想,将要排序的数分成一个个子问题,最终再将子问题合并,结构上是递归的,而且很多有用的算法结构上都是递归的,对递归的理解一定要透彻,如根据树的前序遍历和中序遍历恢复出原树,就采用了递归算法,总体思想我认为是将递归处理看成一个问题去处理,处理顺序也当成一个问题去思考。接下里通过对归 ...
分类:
编程语言 时间:
2016-05-08 18:10:15
阅读次数:
189
1.初识树 首先来看树的几个很重要的概念。节点的度是这个节点所拥有的子树的个数,如果度为0那这个节点称为叶子节点。树的深度是树中所有节点的最大层数,树的度是各节点度的最大值。如果树的各节点的左右子树从左到右是有序的则为有序树,反之为无序树。树的遍历分为前序、中序和后序,树也有很多类型,下面是一些常见 ...
分类:
其他好文 时间:
2016-05-07 12:58:15
阅读次数:
145
标准库中next_permutation函数:找当前序列中元素排列的下一个排列,按照字典顺序进行排列。比如说数组排列"123",那么它的下一个排列为"132",并且返回true。如果当前序列没有下一个排列,我们返回false,且把当前排列置为最小的排列,比如说:排列"321",因为该排列已经是最大的排列,所以它没有下一个排列。我们把该排列置为"123",并且返回false。
标准库实现两...
分类:
编程语言 时间:
2016-05-07 09:31:27
阅读次数:
240