题目:输入一棵二叉搜索树(记住是搜索树),将该二叉搜索树转换为一个排序的双向链表。要求:不能创建任何新的结点,只能调整树中结点指针的指向。分析:如下图因为是二叉搜索树。所以树的排列是规则的。通过中序遍历正好遍历的是由小到大的序列。要求说明是只能改变树结点指针的指向,不能增加新的空间和结点。所以在中序...
分类:
其他好文 时间:
2014-06-23 06:57:13
阅读次数:
242
题目大意:
给出的东西要求建立一个堆,使得后面的数字满足堆的性质,而且字符串满足搜索序
思路分析:
用线段树的最大询问建树。在建树之前先排序,然后用中序遍历递归输出。
注意输入的时候的技巧。。。
#include
#include
#include
#include
#define lson num<<1,s,mid
#define rson num<<1|1,m...
分类:
其他好文 时间:
2014-06-21 21:38:34
阅读次数:
205
假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,求前序遍历。
整体思路是这样的,由后序遍历找到每个节点,然后由中序遍历判断左右子树,将整个二叉树还原后写出前序遍历。
后序遍历的顺序知道,最后一个A是二叉树的根节点,
然后把中序遍历从A分成两段,A左边的是左子树,A右边的是右子树,
结果如下
...
分类:
其他好文 时间:
2014-06-15 17:19:24
阅读次数:
251
根据先序遍历和中序遍历的特点,我们想到了采用递归的方法来实现。思路:1)
代码的容错性检查,比如:先序遍历和中序遍历长度应相等 2)
先保存先序遍历的第一个点,这个点为结点,接下来循环中序遍历,直到midOrd[index]=该结点,那么接下来就可以采用递归,分别对结点左边和右边的序列采用相同的方法...
分类:
其他好文 时间:
2014-06-11 21:48:07
阅读次数:
358
问题:
给定的二叉查找树中,有两个节点不小心被调换了位置,现在需要将其修正,不改变树的结构。
分析:
二叉排序树的中序遍历是有序的,所以这个问题又是建立在中序遍历模板上的问题,所以我们可以对其进行中序遍历,并用一个pre指针指向当前遍历结果中的最后一个结点,即下次遍历前的前一个结点。然后就可以通过将当前结点与pre结点进行比较,来判断是否有序了。若乱序,就将这两个结点都放入到预先定义的容器中...
分类:
其他好文 时间:
2014-06-10 10:54:41
阅读次数:
153
1.系统说明输入一个正整数N,然后随机产生N个整数,创建一个二叉树(左子树≤父节点≤右子树)。使用Windows程序设计,在窗体的客户区自动地画出创建二叉树的过程,并动画演示中序遍历。2.系统要求自动计算每个节点的坐标,节点圆的半径可设置,节点间的距离可设置,左右子树的角度可设置;二叉树的大小可能超...
分类:
其他好文 时间:
2014-06-09 19:54:55
阅读次数:
208
二叉链表的C语言描述基本运算的算法——建立二叉链表、先序遍历二叉树、中序遍历二叉树、后序遍历二叉树、后序遍历求二叉树深度#include#includeusing
namespace std;class Tree{private: struct Node { char da...
分类:
其他好文 时间:
2014-06-09 18:39:49
阅读次数:
310
题目
Two elements of a binary search tree (BST) are swapped by mistake.
Recover the tree without changing its structure.
Note:
A solution using O(n)
space is pretty straight forward. Cou...
分类:
其他好文 时间:
2014-06-08 15:32:45
阅读次数:
245
问题:
给定二叉树的前序和中序遍历,重构这课二叉树.
分析:
前序、中序、后序都是针对于根结点而言,所以又叫作先根、中根、后根(当然不是高跟)。
前序:根 左 右
中序:左 根 右
对二叉树,我们将其进行投影,就会发现个有趣的事:
发现投影后的顺序,恰好是中序遍历的顺序,这也就是为什么在构造二叉树的时候,一定需要知道中序遍历,因为中序遍历决定了结点间的相对左右位置关系。所...
分类:
其他好文 时间:
2014-06-08 15:20:12
阅读次数:
214