摘要: 1.直接插入排序 【思想】利用有序表的插入操作进行排序 有序表的插入:将一个记录插入到已排好序的有序表中,从而得到一个新的有序表 【特点】稳定 空间代价:O(1) 时间代价:O(n^2) 2.折半插入排序 【思想】 ·在插入第i个记录时,前面的记录已经是有序的了 ·可以用二分法查找第i个记录的正确位 阅读全文
posted @ 2017-03-01 16:40 Strawberry丶 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 【思路】BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合法的后序序列。下面是在讨论中看到的一份代码,已学习到。 阅读全文
posted @ 2017-03-01 11:55 Strawberry丶 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树BinarySort Tree)或者是一棵空树,或者是具有下列性质的二叉树: (1)若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值; 阅读全文
posted @ 2017-02-28 20:53 Strawberry丶 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 【思路】广度优先遍历,队列实现 阅读全文
posted @ 2017-02-28 20:27 Strawberry丶 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是 阅读全文
posted @ 2017-02-28 20:11 Strawberry丶 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 【思路1】两个栈Stack和Min,Stack为当前栈中元素,Min为与Stack中元素一一对应的当前栈最小值。 【思路2】使用pair<int,int>从而实现只用一个栈来操作 阅读全文
posted @ 2017-02-28 19:42 Strawberry丶 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 【思路】本题关键在于 右->左 和 下->上 两个循环体中的判断条件,即判断是否重复打印。 阅读全文
posted @ 2017-02-28 17:09 Strawberry丶 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 【思路】要完成旋转共需两步 1.第一次x,y互换 s1[i][j]=s[j][i]1, 2, 3, 45, 6, 7, 89, 10,11,1213,14,15,16变成了1, 5, 9, 132, 6,10,143, 7,11,154, 8,12,16 然后x逆序 s2[i][j]=s1[n-i] 阅读全文
posted @ 2017-02-27 21:37 Strawberry丶 阅读(1167) 评论(0) 推荐(0) 编辑
摘要: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 【思路1】递归,左右孩子交换再分别递归左右子树 【思路2】非递归,栈实现 阅读全文
posted @ 2017-02-27 20:10 Strawberry丶 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 【思路】要查找树A中是否存在和树B结构一样的子树,可以分成两步: 1.第一步在树A中找到和B的根节点的值一样的结点R;即当前树A包含子树B,HasSubtree(...) 2.第二步再判断树A中以R 阅读全文
posted @ 2017-02-27 19:23 Strawberry丶 阅读(191) 评论(0) 推荐(0) 编辑