题意:给出前序遍历和后序遍历,求总共有多少种中序遍历的可能。
思路:
对于一个节点,当且仅当它仅有一棵子树时,在保证先序和后序相同的前提下,才可能有不同的中序(它的子树可在左或右,所以有2种);
此时必有a[i+1]==b[j-1](为什么)//i是节点在先序中的位置,j是它在后序中的位置;
因此只要找到这种节点的个数设为x,ans=2^x。
#pragma commen...
分类:
其他好文 时间:
2014-08-30 15:10:59
阅读次数:
247
今天说说递归思想,在我们编码时,有的时候递归能够让我们的算法更加通俗易懂,并且代码量也是大大的减少。比如我先前的系列中说到了关于树的“先序,中序和后序”遍历,那么看看用递归来描叙这个问题是多少的简洁,多么的轻松。 1 #region 二叉树的先序遍历 2 /// 3 /// ...
分类:
其他好文 时间:
2014-08-30 11:10:19
阅读次数:
245
今天学习到二叉树的时候,看到了二叉树的先序,后序,中序遍历方法。然而二叉树遍历方法递归实现十分简单,迭代版本实现起来些许复杂,就又上手试试二叉树的各种遍历方法以及实现版本,当是温习一遍之前了解到的实现方法。 三种遍历方法中递归实现难度相当,代码相当简略。 三种遍历方法中利用栈实现的迭代版本中...
分类:
其他好文 时间:
2014-08-29 23:50:08
阅读次数:
443
知识点: 1、Linux 进程访问权限 2、二叉树的前序遍历、中序遍历、后序遍历(其中根据前序和中序,写出后序遍历结果) 3、按照LRU方法进行页面置换 4、双向链表插入一个节点 5、磁盘大小的计算 6、 成本为500元,其中每增加1元,顾客将会流失1%,计算最优的 7、概率问题 8、推理题(紧急项...
分类:
其他好文 时间:
2014-08-29 22:32:38
阅读次数:
300
遍历二叉树
二叉树是一种非线性的数据结构。所谓的遍历二叉树就是按某种顺序访问二叉树中的每个节点,要求每个节点被访问一次且仅一次。
遍历操作实际上是将非线性结构线性化过程,其结果为线性序列。
二叉树的操作
(1)先序遍历---结束的条件是二叉树是否为空 TLR
先访问根节点;
再先序访问左子树;
再先序访问右子树。
(2)中序遍历---结束的条件是二叉树是否为...
分类:
其他好文 时间:
2014-08-29 18:24:18
阅读次数:
154
1.取出先序的第一个节点。(先序中的节点为根节点)2.用第一个节点可以将中序分成左右子树,然后又取出先序的第二个节点再次将左右子树再次划分,3,当将中序全部划分为单个点时就结束。例如:假设一颗二叉树的先序序列是:EBADCFHGIKJ。中序序列为:ABCDEFGHIJK。请画出该二叉树。
分类:
其他好文 时间:
2014-08-29 17:52:28
阅读次数:
212
思想: 迭代。
说明: 这类问题,要求一个提供根节点,然后另一个序列(中序序列)可依据根节点分出左右子树。
分类:
其他好文 时间:
2014-08-27 20:20:38
阅读次数:
198
题意:给出中序和后序序列,求从根到叶子结点这样路径和值最小的叶子结点。如果和值相等,则选择叶子结点值较小的那个。
思路:由中序和后序序列递归地构造二叉树。顺序存储显然不行,使用链式存储。由于每个结点输入的是数字而不是字母,这里采用整型数组来存的,而不再是字符串,可能更方便些。build(n,a1,a2)函数是利用中序序列a1和后序序列a2构造有n个结点的二叉树,返回根结点指针。递归构造出二叉树后...
分类:
其他好文 时间:
2014-08-26 19:40:26
阅读次数:
200
这里没再用到先申请大Node数组的方法了,想练练写动态内存分配和释放的,一次OK了,也没怎么出错啊,开心~
方法二 - Code:
//给出一个二叉树的先序遍历和中序遍历,输出它的后序遍历
//直接构造的方法白书已给出。这里是先递归构造二叉树,然后进行后序遍历。
#include
#include
#include
#define MAXN 1000
typedef struct nod...
分类:
其他好文 时间:
2014-08-26 13:42:56
阅读次数:
253
UVA 1264 - Binary Search Tree
题目链接
题意:给定一个序列,插入二叉排序树,问有多少中序列插入后和这个树是相同的(包括原序列)
思路:先建树,然后dfs一遍,对于一个子树而言,只要保证左边和右边顺序对就可以了,所以种数为C(左右结点总数,左结点),然后根据乘法原理乘上左右子树的情况即可
代码:
#include
#include
t...
分类:
其他好文 时间:
2014-08-25 11:51:14
阅读次数:
204