思路:这道题目关键在于不能创建新的节点,如不然,我们可以直接将二叉排序树中序遍历保存到一个数组中,而后再建立一个双性链表,将数据保存到双向链表里。
这里不能创建新节点,我们只能改变节点的指向左右子树的节点,让其变为指向二叉链表中的前后节点,很明显这里同样用的是中序遍历,因此这道题目依然是中序遍历的变种,中序递归构造实现即可,每次递归都保存一个指向已构造好的双向链表的尾节点的指针,将其与下一个节点连接起来。
另外,这道题OJ的输出格式与前面的不同,输出样例中又没有说明,我试了三次才AC,前两次...
分类:
其他好文 时间:
2014-05-26 05:21:59
阅读次数:
189
按先序序列输入字符序列(其中逗号表示空节点),输出该二叉树的层次遍历序列。
#include
#define END ','//表示空节点
using namespace std;
typedef char Elem_Type;
typedef struct BiTree
{
Elem_Type data;
struct BiTree *Lchild;
stru...
分类:
其他好文 时间:
2014-05-26 04:53:07
阅读次数:
261
出题:要求将一个有序整数数组转换成最小深度的Binary Search
Tree表示;分析:由于需要是最小深度,所以BST应保持平衡,左右节点数大致相当,并且BST中当前根节点大于所有其左子树中的元素,小于所有其右子树中的元素。对于排序数组而言,中间元素必然作为根节点,然后递归对由中间元素分割的左右...
分类:
其他好文 时间:
2014-05-26 03:49:39
阅读次数:
369
剑指offer上解决八皇后问题,没有用传统的递归或非递归回溯法,而是用了很巧妙的全排列法。
先说下八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处于同一行,同一列或者同意对角线上,求出所有符合条件的摆法。
全排列解决八皇后问题的思路如下:
由于8个皇后不能处在同一行,那么肯定每个皇后占据一行,这样可以定义一个数组A[8],数组中第i个数字,即A[i]表示位于第i行的皇后的列号。先把数组A[8]分别用0-7初始化,接下来对该数组做全排列,由于我们...
分类:
其他好文 时间:
2014-05-26 03:22:14
阅读次数:
223
二分查找也是分治策略和递归一个重要的实例。对于一个有序的数组,二分查找的时间复杂度是O(logn)int binarysearch(int a[],int
s,int e,int k){ int mid =(s+e)/2; if(k==a[mid]) return mid;...
分类:
其他好文 时间:
2014-05-26 02:23:44
阅读次数:
170
特点:1.是冒泡的改进2.是一个递归的过程3.不稳定4.时间复杂度:O(nlogn)设要排序的数组是A[0]...A[n-1],首先取数组的第一个数作为关键数据,然后将所有比它小的数都放到它的前面,比他大的都放到他的后面,这个过程被称为一趟快速排序算法步骤:1.设置两个变量i,j,排序开始i
= 0...
分类:
其他好文 时间:
2014-05-26 01:48:16
阅读次数:
282
感谢 微信号---code4god 这是他们的微信平台 每日会提供一道算法题
我只是个搬运工我们每一天都应该比昨天更强一点观察下列式子:12 = 12*1 12 = 6*212 = 4*312 = 3*412 = 3*2*212 =
2*612 = 2*3*212 = 2*2*3对于给定的n 计算n...
分类:
其他好文 时间:
2014-05-26 01:06:41
阅读次数:
248
初期:
一.基本算法:
(1)枚举. (poj1753,poj2965)
(2)贪心(poj1328,poj2109,poj2586)
(3)递归和分治法.
(4)递推.
(5)构造法.(poj3295)
(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)
二.图算法:
...
分类:
其他好文 时间:
2014-05-25 01:58:06
阅读次数:
247
java021
file讲解:文件和目录路径名的抽象表示形式
IO流操作的是数据,而数据一般是以文件的表现形式。
File类:用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作
file对象可以作为参数传递给流的构造函数
File类常见的方法:
1. 文件的创建:
boolean ...
分类:
其他好文 时间:
2014-05-24 18:06:16
阅读次数:
388
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一...
分类:
其他好文 时间:
2014-05-24 17:17:38
阅读次数:
237