摘要:
二叉树的重建几乎所有的人都知道二叉树可以根据前序遍历+中序遍历或者后序遍历+中序遍历的方式重新建立原来的二叉树,并且结果是唯一的。下面就来看一下相关的方法。前序+中序重建二叉树给定一棵二叉树的前序和中序遍历序列,重新建立这棵二叉树。注意:在前序中确定了根节点以后,要去中序里面查找这个根节点,这时的查... 阅读全文
摘要:
前奏有这样一个问题:在一条左右水平放置的直线轨道上任选两个点,放置两个机器人,请用如下指令系统为机器人设计控制程序,使这两个机器人能够在直线轨道上相遇。(注意两个机器人用你写的同一个程序来控制)。 指令系统:只包含4条指令,向左、向右、条件判定、无条件跳转。其中向左(右)指令每次能控制机器人向左(右... 阅读全文
摘要:
二叉查找树二叉查找树的性质:对于树中的每一个节点X,它的左子树中所有关键字值小于X的关键字值,它的右子树中的所有关键字值大于X的关键字值。二叉查找树的平均深度为O(logN),下面看一下它的相关的操作函数。删除一个二叉树(递归形式):void MakeEmpty(TreeNode *root){ i... 阅读全文
摘要:
题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 因为是中序遍历,所有要找的这个父结点,肯定有这样的特征:当前结点所在的子树一定是某个根结点的左子树。并且当前结点是该左子树的最右结点。 所以算法设计:... 阅读全文
摘要:
学习链接:http://blog.csdn.net/jason314/article/details/5640969http://coolshell.cn/articles/7965.html搜牛客网上多有关于fork的题目在真实的linux中跑一次 阅读全文
摘要:
1. 宏定义#define ASPECT_RATIO 1.653该宏定义ASPECT_RATIO也许从来没有被编译器看到,也许在编译器开始处理源码之前就已经被预处理器替换了。所以记号名称ASPECT_RATIO有可能没进入符号表(symbol table)中。所以,当你从这个常量得到一个编译错误信息... 阅读全文
摘要:
Hash表能够实现在O(1)时间内对数据访问,虽然空间复杂度很高,但是时间复杂度很好。所以下面说一些使用Hash的算法。第一个只出现一次的字符利用Hash可以实现统计字符的个数,然后在遍历一次得到最早的那个只出现一次的字符。注意:如果传入的字符串为NULL或者字符串里没有只出现一次的字符,这两种情况... 阅读全文
摘要:
计算n的阶乘末尾0的个数首先,算出n的阶乘的结果再去计算末尾有多少个0这种方法是不可取的, 因为n的阶乘是一个非常大的数,分分种就会溢出。我们应当去分析, 是什么使n的阶乘结果末尾出现0。n阶乘末尾的0来自因子5和2相乘,5*2=10。因此,我们只需要计算n的阶乘里, 有多少对5和2。注意到2出现的... 阅读全文
摘要:
问题:一个整数数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。分析:这是一个很新颖的关于位运算的题目。首先考虑这个问题的一个简单版本:一个整数数组里除了一个数字之外,其他的数字都出现两次,请写程序找出这个只出现一次的... 阅读全文
摘要:
删除链表中多余的重复结点I首先对于一个有序的结点递增的链表,删除重复的结点,只保留一份重复的结点。Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3. 只需要一个结点指针就能够完成操作。ListNode* deleteDup... 阅读全文