波兰式,操作符放在操作数前。逆波兰式,操作符放在操作数后。中序的话,用两个栈,一个存操作符, 一个存操作数,根据操作符优先级来操作。为了处理边界情况,在操作符的栈底和栈顶都放了一个"#"。伪代码如下: 1 stack ops; 2 stack nums; 3 ops.push('#'); 4 5 ....
分类:
其他好文 时间:
2014-10-05 17:09:38
阅读次数:
297
这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的。 <1>已知二叉树的前序序列和中序序列,求解树。 1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元...
分类:
其他好文 时间:
2014-10-04 10:33:06
阅读次数:
295
根据后中序序列生成二叉树:从后序序列中找到二叉树(或者子树)的根结点,然后在中序序列找到该根结点,根结点将中序序列分成左右两部分,左边为左子树,右边为右子树。根据中序序列确定左子树的长度,确定左子树中最右下根结点在后序序列中的位置,从而可以确定左右子树在后中序序列中的范围,然后递归的生成左右子树。...
分类:
其他好文 时间:
2014-10-03 12:59:34
阅读次数:
192
转:http://blog.csdn.net/zs634134578/article/details/20938113考试时长:120分钟一不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)1已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHA...
分类:
其他好文 时间:
2014-10-02 14:45:43
阅读次数:
195
首先明白两个概念:
1. 深度遍历包括前中后序遍历三种;
2. 广度优先遍历就是层次遍历。
PS:
前中后序遍历,如果使用递归遍历,都很简单易理解;
如果使用非递归方式,首先想到的就应该是使用栈结构来控制整个过程,因为递归也是利用栈来实现的;
前中后序遍历的非递归方式中,后序遍历的非递归方式相比较而言,略复杂。...
分类:
其他好文 时间:
2014-10-02 12:39:03
阅读次数:
301
Oracle中序列Sequence的创建语法如下:CREATE SEQUENCE [ schema. ] sequence [ { INCREMENT BY | START WITH } integer | { MAXVALUE integer | NOMAXVALUE } | { MI...
分类:
其他好文 时间:
2014-09-28 20:41:05
阅读次数:
211
第一种方法是Morris Traversal
是O(n)时间复杂度,且不需要额外空间的方法。缺点是需要修改树。
通过将叶子节点的right指向其中序后继。
代码如下
vector inorderTraversal(TreeNode *root) {
vector res;
TreeNode * cur = root;
TreeNode...
分类:
其他好文 时间:
2014-09-27 22:46:50
阅读次数:
195
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三...
分类:
其他好文 时间:
2014-09-27 20:33:10
阅读次数:
174
本题是在中序遍历的基础上,找不合规范(不是递增)的树节点对,然后交换
首先看两种序列:
1. 1 3 2 4=>应该交换3和2
2. 4 3 2 1=>应交换4和1
这两种序列对应了不符合条件的BST的中序遍历序列的所有可能性---两个节点中序遍历相邻/不相邻
如果我们用一个数组swap保存所有中序遍历不递增的结果,那么这个数组只可能是2或者4的大小
而我们交换数组中节点对内容,只需交...
分类:
其他好文 时间:
2014-09-27 16:21:19
阅读次数:
151
题目: 给定一棵二叉树,假定每个节点都用唯一的字符表示,具体结构如下:structNODE{NODE*pLeft;NODE*pRight;charchValue;}; 假设已经有了前序遍历和中序遍历结果,希望通过一个算法重建这棵树。 给定函数的定义如下:voidRebuild(char*pPreOr...
分类:
其他好文 时间:
2014-09-26 18:58:18
阅读次数:
134