先序遍历:若二叉树为空,则空操作;否则访问根节点;先序遍历左子树;先序遍历右子树。中序遍历:若二叉树为空,则空操作;否则中序遍历左子树;访问根节点;中序遍历右子树。后序遍历:若二叉树为空,则空操作;否则后序遍历左子树;后序遍历右子树;访问根节点。二叉链表:链表中的结点包含三个域:数据域和左右指针域。...
分类:
其他好文 时间:
2014-08-10 18:34:20
阅读次数:
480
题意:
给一个0和1组成的序列a,要构造一个同样长度的序列b。b要满足非严格单调,且
值为0到1的实数。最后使得 sum((ai-bi)^2)最小。
算法:
首先a序列开始的连续0和末尾的连续1是可以不考虑的。因为只要b序列对应开头为0、
末尾为1,既不影响单调性又能使对应的(ai-bi)^2=0。
然后,
先找111100、11100、10这样以1开始以0结束的序列块。每...
分类:
其他好文 时间:
2014-08-10 10:28:10
阅读次数:
237
题目描述:
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个数n(0
接下来的n行,每行为一个二叉搜索树的先序遍历序列,其中左右子树若为空则用0代替。
输出:
对应每个测试案例,
输出将二叉搜索树转换...
分类:
其他好文 时间:
2014-08-06 14:50:01
阅读次数:
203
很容易想到用先序遍历,并传递进去一个数组和当前和。just so so
代码:
#include
#include
#include
using namespace std;
typedef struct tree{
int data;
struct tree * lchild;
struct tree * rchild;
}Tree,*pTree;
void create...
分类:
其他好文 时间:
2014-08-06 11:55:31
阅读次数:
227
对于一颗二叉树,可以根据先序遍历(后序遍历)和中序遍历重新还原出二叉树。
主要通过递归实现。
关键是找出对应左右子树的长度,之后传递先序遍历的开始节点、结束节点,中序遍历的开始节点、结束节点。
代码:
#include
using namespace std;
typedef struct tree{
int data;
struct tree *lchild;
struct ...
分类:
其他好文 时间:
2014-08-05 19:27:30
阅读次数:
224
题目可以在bnuoj、soj等OJ上找到。题意:不超过40个人站成一圈,只能和两边的人对战。给出任意两人对战的输赢,对于每一个人,输出是否可能是最后的胜者。分析:首先序列扩展成2倍,破环成链。dp[i][j]表示i和j能够相遇对打,那么dp[i][i+n]为真代表可以成为最后胜者。枚举中间的k,若i...
分类:
其他好文 时间:
2014-08-04 23:59:08
阅读次数:
534
题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
比如:
上面这棵二叉树,如果寻找和为22的路径,那应该有两条,首先是10,5,7,另外一条是10,12.
思路:
可以按照先序遍历的方式访问二叉树,这样可以确保根先于子树被访问到,另外需准备一个栈...
分类:
其他好文 时间:
2014-08-04 14:28:57
阅读次数:
237
二叉树遍历是二叉树中非常基础的部分,也是学习二叉树必须熟练掌握的部分,下面我们先给出二叉树三种遍历方式的定义,并通过举例来说明二叉树遍历的过程。
二叉树的遍历分为:前序遍历(也叫先序遍历)、中序遍历、后序遍历。所谓前、中、后都是根据当前子树根结点相对左右孩子的位置而言,也就是说:...
分类:
其他好文 时间:
2014-08-01 23:13:42
阅读次数:
324
题目描述:
输入一个二叉树,输出其镜像。
九度OJ的测试很蛋疼啊~
这里,我先写一个求二叉树镜像的代码,使用自己的测试代码:
思路很简单:先判断是否左右孩子都为空,如果不是,则交换,然后递归左右子树。其实是先序遍历。
/*
二叉树镜像
by Rowandjj
2014/8/1
*/
#include
using namespace std;
typedef str...
分类:
其他好文 时间:
2014-08-01 19:47:22
阅读次数:
266
题目地址:HDU 1710
已知二叉树先序和中序求后序。
#include
#include
int a[1001], cnt;
typedef struct node
{
int date ;
node *lchild , *rchild ;
}*tree;
int getk(int ch,int ino[],int is,int n)
{
for(int i =...
分类:
其他好文 时间:
2014-07-31 13:25:46
阅读次数:
225