题目描述:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
给定一个有序的链表,要求构建一颗平衡二叉查找树。
解析:二叉查找树的中序遍历的结构就是一颗二叉查找树,要使得最终的二叉查找树的结构尽可能的平衡,也就是说只需要...
分类:
其他好文 时间:
2014-08-23 23:02:31
阅读次数:
389
约瑟夫环,已知n个人,(编号从1、2、3、4......n),围在一张圆桌上,从编号为startnum的人开始报数,报到outnum的人出列,接着从下一个人开始从1报数,数到outnum的人又出列;依次规律重复下去,知道所有人全部出列,请写出出列的依次序号数。 这是一个约瑟夫环问题,用单链表来...
分类:
其他好文 时间:
2014-08-23 21:37:11
阅读次数:
273
分为两种情况,一种是只逆序输出,实际上不逆序;另一种是把链表逆序。********************逆序输出*********************** 1 #include 2 #include 3 #include 4 using namespace std; 5 6 7 typed.....
分类:
其他好文 时间:
2014-08-22 19:26:19
阅读次数:
230
参考文献1
参考文献2
题目:输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点
变种一:二叉树是二分查找树,如果根节点比两个节点都小,则访问右子树,都大则访问左子树,否则即为结果
变种二:每个节点有指向父节点的指针,则转变为查找两个单链表的第一个公共节点
变种三:对于普通二叉树,下面给出两种方法
方法一:二叉树的后序遍历,先看节点是否在左子树,再看右子树,然后根据左右子...
分类:
其他好文 时间:
2014-08-21 17:22:34
阅读次数:
197
呵呵,这个题不能直接删除已知的结点,因为是单链表,不知道前驱,只知道
后继结点,直接删除会使链表断开。不过我们可以删除已知结点的后继结点,
把后继结点的值赋值给已知结点。
#include
struct Node
{
int data;
Node* next;
};
bool removeNode(Node* vNode)
{
if (vNode == NULL || vNo...
分类:
其他好文 时间:
2014-08-20 01:25:45
阅读次数:
174
1. 二分搜索详见笔者博文:二分搜索的那些事儿,非常全面2. 矩阵二分搜索(1) 矩阵每行递增,且下一行第一个元素大于上一个最后一个元素(2) 矩阵每行递增,且每列也递增3. DFS 深度优先搜索适用场景:(1) 输入数据:如果是 递归数据结构(如单链表、二叉树),则一定可以使用DFS(2) 求解目...
分类:
其他好文 时间:
2014-08-19 16:12:34
阅读次数:
207
我们维护两个指针, 它们之间的距离为n。然后,我将这两个指针同步地在这个单链表上移动,保持它们的距离 为n不变。那么,
当第二个指针指到空时,第一个指针即为所求。
#include
struct Node
{
int data;
Node* next;
};
void initList(Node* vNode)
{
for (int i=0; i < 20; ++i)
{...
分类:
其他好文 时间:
2014-08-19 01:00:33
阅读次数:
257
当二叉树在某些情况下退化为类单链表时,它的查找、插入、删除运算复杂度将不再是O(logN)),解决问题的方法就是尽量维持树的平衡。节点的平衡因子定义为左子树高度减去右子树高度,AVL树中每个节点平衡因子为0,1,-1;具体代码: 1 #include 2 #include 3 using na...
分类:
其他好文 时间:
2014-08-17 17:01:22
阅读次数:
323
为什么出这个真理文档呢?方面以后我们的视频不断跟进,高级部分关于JDK源码的学习,所以有些基本的思维要叙述一下,包括AQS,常用数据结构,线程等等。这一个帖子主要是我以前写的模拟常用数据结构的代码,可能有些bug 并且不规范,但是重在学习思维.并没有JDK源码部分考虑多,只是简单的写了一点.分享给大家,关于线程同步器的学习我觉得先会用 然后看源码,接着模拟.好开始数据结构了.
注意:在java...
分类:
其他好文 时间:
2014-08-17 13:07:42
阅读次数:
293
我们熟悉了java单向链表的模拟,现在我就必须开始双向链表的模拟的.
1.基础结构对象DuLNode
public class DuLNode {
private Object data;// 存放结点值
private DuLNode prior; // 前驱结点的引用
private DuLNode next; // 后继结点的引用
public DuLNode()...
分类:
其他好文 时间:
2014-08-17 13:07:32
阅读次数:
278