经常有面试题就是知道一棵树的前序遍历和中序遍历让你写出后序遍历,这个慢慢画是能画出来的,但是要很快的弄出来还是要懂原理。首先说一下三种遍历:所谓的前序后序和中序都是遍历时遍历根节点的顺序。子树的话依照从做左到右的顺序,比如前序就是:中-》左-》右,中序就是:左-》中-》右。现在前序是:ABDGCEF...
分类:
编程语言 时间:
2015-09-08 23:18:40
阅读次数:
144
分三十个客观题和四个主观题下面是部分记忆的内容1.有十个球,1个红球9个黑球,每次取一个,且不放回,问恰第二次取出红球的概率为:_______2.待排序列{46,79,56,38,40,84}求快速排序第一次之后的排列结果();3.二叉树知道后续遍历{e,d,g,f,b,c,a},中序遍历{d,e,...
分类:
其他好文 时间:
2015-09-07 09:36:21
阅读次数:
388
题目来源http://www.nowcoder.com/questionTerminal/7fb8ba37f48c4feaaf518f221caefcb4 中缀表达式(a+b)*c*(d-e/f) 转成后缀 是? 其实呢,看了一下解释,这里所谓的前缀、中缀和后缀表达式就和二叉树里的前序、中序、后序遍...
分类:
其他好文 时间:
2015-08-31 21:14:55
阅读次数:
168
该问题用递归的思路很好解决,每一次取前序序列的首元素作为当前子树的根节点,然后在中序序列中找到对应的节点,以此可以确定根节点对应的左子树和右子树的序列长度,递归构造根节点的左子树和右子树即可。
TreeNode *execBuild(vector &preorder, int prestart, int preend, vector &inorder, int instart, int inen...
分类:
其他好文 时间:
2015-08-31 19:48:01
阅读次数:
162
近期在做一个项目,涉及到一些简单的规则匹配。规则的判定条件可以用关系表达式描述,形如(P1|P2)&(P3|P4)。其中&是与,|是或,P1-P4是Pattern,具体的匹配条件,返回值是True或者False。为计算此表达式的值,采用中序转后序再计算表达式的值。1. 后序表达式的生成 中序表达式转...
分类:
其他好文 时间:
2015-08-31 00:45:52
阅读次数:
177
描述设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:subtree的左子树的加分...
分类:
其他好文 时间:
2015-08-30 09:57:11
阅读次数:
234
前序遍历:结点->左子树->右子数中序遍历:左子树->结点->右子数//同一个结点及其后代中,左子树优先级最高后序遍历:左子树->右子数->结点
分类:
其他好文 时间:
2015-08-29 18:27:13
阅读次数:
131
递归算法
void preorder1(Node *root) //递归前序遍历
{
if (root == NULL) return;
printf("%d ", root->val);
preorder1(root->left);
preorder1(root->right);
}
void inorder1(Node *root) //递归中序遍历
{
if (root == ...
分类:
其他好文 时间:
2015-08-29 17:04:03
阅读次数:
151
二叉树的重建几乎所有的人都知道二叉树可以根据前序遍历+中序遍历或者后序遍历+中序遍历的方式重新建立原来的二叉树,并且结果是唯一的。下面就来看一下相关的方法。前序+中序重建二叉树给定一棵二叉树的前序和中序遍历序列,重新建立这棵二叉树。注意:在前序中确定了根节点以后,要去中序里面查找这个根节点,这时的查...
分类:
其他好文 时间:
2015-08-29 16:38:27
阅读次数:
189
二叉树的遍历顺序有:前向遍历、中序遍历、后续遍历、按层遍历四种。 前向遍历:先根节点再左子树后右子树。 中序遍历:先左子树再根节点后右子树。(投影法快速实现遍历)。 后续遍历:先左子树再右子树后根节点 按层遍历:ABECDFG。 二、二叉树的重构。 已知一棵二叉树的先序遍历和中序遍历序列分别为: 先...
分类:
其他好文 时间:
2015-08-28 21:15:56
阅读次数:
198