04 2014 档案

摘要:Zend Studio 可以直接通过Remote System的方式直接连接服务器端的代码,就是可以直接修改服务器端的代码,不过修改的时间小心点,修改就会立即生效的。选择Remote Systems 后,在下面就会出现下图把这个tab移动到左边,并在左侧区域点击右键,出现下图,选择 new conn... 阅读全文
posted @ 2014-04-30 08:52 z陵 阅读(617) 评论(2) 推荐(0)
摘要:【面试题013】在O(1)时间删除链表结点我们要删除结点i,我们可以把结点i的下一个结点j的内容复制到结点i,然后呢把结点i的指针指向结点j的下一个结点。然后在删除结点j。1.如果结点i位于链表的尾部;2.如果结点i位于链表的头部;3.如果结点i既是链表的头部又是链表的尾部;DeleNode.cpp... 阅读全文
posted @ 2014-04-29 08:47 z陵 阅读(661) 评论(0) 推荐(0)
摘要:【面试题012】打印1到最大的n位数大数问题字符串中的每一个字符都是‘0’到‘9’之间的某一个字符,用来表示数字中的一位,因为数字最大是n位的,因此我们需要一个长度为n+1的字符串,字符串的最后一个是结束符号‘\0’,当实际数字不够n位的是哦互,在字符串的前半部分补0。我们要做的是,在字符串上面做模... 阅读全文
posted @ 2014-04-28 09:10 z陵 阅读(297) 评论(0) 推荐(0)
摘要:【面试题011】数值的整数次方不能用等号判断不精确数字是不是相等,在软件开发过程中,永远不变的就是需求会一直改变。实现函数 double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时步需要考虑大数问题。这个指数可能是0,正数... 阅读全文
posted @ 2014-04-27 12:48 z陵 阅读(527) 评论(0) 推荐(0)
摘要:【面试题010】二进制中1的个数二进制中1的个数这个世界上面有10种人,一种人知道二进制,而另一种人不知道二进制……呵呵……输入一个整数,输出该数二进制表示中1的个数。方法一:1除了最右边的一位之外,其他所有位置都是0,如果一个整数与1做与运算的结果是1,表示该整数最右边一位是1,否则是0,然后这个... 阅读全文
posted @ 2014-04-26 08:57 z陵 阅读(247) 评论(0) 推荐(0)
摘要:【面试题009】斐波那契数列斐波那契数列f(n) = 0 ; n = 0f(n) = 1 ; n = 1f(n-1) + f(n-2) ; n > 1Fib.cpp:1234567891011121314151617181920212223242526#includeusingnamespacest... 阅读全文
posted @ 2014-04-25 11:03 z陵 阅读(227) 评论(0) 推荐(0)
摘要:【面试题008】旋转数组的最小数字旋转数组的最小数字输入一个递增排序的数组的一个旋转,输出这个旋转数组的最小元素,例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,输出这个旋转数组{3,4,5,1,2}的最小值;旋转之后的数组实际上可以划分成两个有序的子数组;前面子数组的大小都大于或者等... 阅读全文
posted @ 2014-04-24 21:40 z陵 阅读(213) 评论(0) 推荐(0)
摘要:【面试题007】栈和队列用两个栈来模拟一个队列。在出队之前,一个辅助栈如果为空的话需要把第一个栈中的所有元素弹出压入这个栈中,栈顶的那个元素就是要出队的元素;如果辅助栈不为空的话,栈顶元素就是要出队的元素;TwoStack.cpp:1234567891011121314151617181920212... 阅读全文
posted @ 2014-04-23 10:01 z陵 阅读(175) 评论(0) 推荐(0)
摘要:【二叉树遍历模版】前序遍历1.递归实现test.cpp:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#include#in... 阅读全文
posted @ 2014-04-22 09:11 z陵 阅读(652) 评论(0) 推荐(0)
摘要:【面试题006】重建二叉树重建二叉树,在前序遍历和中序遍历两个序列中,确定了根结点的值,进而分别找到了左右子树对应的序列;递归的构建二叉树。ConstructBinaryTree.cpp:12345678910111213141516171819202122232425262728293031323... 阅读全文
posted @ 2014-04-22 08:51 z陵 阅读(665) 评论(0) 推荐(1)
摘要:首先打开PhpStrom->Toolbar->Settings(工具栏的倒数第三行)进入Settings后的界面如下单击进入左边Deployment目录,在右边配置信息里面进行配置填入这个部署项的名字,我们习惯用 “用户名@IP地址的最后一位” 作为这个部署的名字Connection标签下面Type... 阅读全文
posted @ 2014-04-21 08:45 z陵 阅读(1471) 评论(0) 推荐(0)
摘要:上节课详细讲解了redis数据库的常用命令,以及redis数据库高级应用当中的,安全性,跟咱们的主从复制,这节课呢,咱们继续来讲咱们的高级应用,首先来看一下咱们的事务处理,事务处理我前面说过redis可以做事务处理,但是是非常简单的,他对事务处理的支持还是比较简单的一个阶段啊,Redis只能保证一个... 阅读全文
posted @ 2014-04-20 11:49 z陵 阅读(1273) 评论(2) 推荐(2)
摘要:Redis常用命令Redis提供了非常丰富的命令,对数据库和个中数据类型进行操作,这些命令呢,可以在Linux终端使用。分为两大类的命令,一种是键值相关的命令,一种是服务器相关的命令,首先来看下咱们的键值相关的命令,Keys返回满足的给定pattern的所有key返回满足后面这个模糊匹配的所有的键,... 阅读全文
posted @ 2014-04-19 10:35 z陵 阅读(1010) 评论(2) 推荐(1)
摘要:sets类型sets类型及操作Set类型是一个集合,他是string类型的无序集合,也就是说咱们的set是没有顺序的,Set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对咱们集合我们可以取并集、交集、差集。也就是说咱们这里的set集合, 类似于咱们数学里的集合的概念:se... 阅读全文
posted @ 2014-04-18 08:58 z陵 阅读(1196) 评论(0) 推荐(1)
摘要:list类型redis的list类型是一个链表结构,他的主要功能是push、pop、获取一个范围的所有值等等一些操作,咱们push什么意思,push是不是相当于咱们php里面的array_push,是向数组压入一个元素吧,这里的push是向咱们的链表里面压入一个元素,pop是从咱们的链表中弹出一个元... 阅读全文
posted @ 2014-04-17 21:12 z陵 阅读(635) 评论(0) 推荐(0)
摘要:Redis的数据类型Redis主要分为五个数据类型,一个是string,最简单的一个数据类型,hash,list,还有set集合,还有zset有序集合,这是咱们redis的五种基础类型,接下来看一下咱们最简单的数据类型,string类型,string类型呢,是咱们redis最简单的数据类型,一个ke... 阅读全文
posted @ 2014-04-16 10:59 z陵 阅读(1806) 评论(2) 推荐(0)
摘要:单元目标:1.NoSQL介绍2.Redis的介绍3.Redis适用场合4.Redis的安装与部署5.Redis的数据类型6.Redis的常用命令7.Redis的高级应用通过这七点大家会对redis有深刻的理解。首先看NoSQL的介绍,什么是NoSQL啊,NoSQL = Not Only SQL,什么... 阅读全文
posted @ 2014-04-15 13:45 z陵 阅读(1439) 评论(5) 推荐(1)
摘要:1.1软件准备虚拟机VMware 9Ubuntu 12.04Secure CRTEditPlus1.2安装VMware 9与Ubuntu 12.04这两个软件安装,按部就班,这里就不介绍了。1.3安装VMware Tools调出终端或者按ctrl+alt+t键也可以调用终端调出终端后,就可以在终端中... 阅读全文
posted @ 2014-04-14 09:00 z陵 阅读(336) 评论(2) 推荐(0)
摘要:从尾到头打印链表很容易想到用栈来实现;其实也可以用递归来实现,递归的本质就是一个栈结构;如果链表特别长,会导致函数调用的层级很深,从而有可能导致函数调用栈溢出;现实用栈来实现循环的点吗更容易懂;ListRev.cpp:12345678910111213141516171819202122232425... 阅读全文
posted @ 2014-04-14 08:48 z陵 阅读(659) 评论(0) 推荐(0)
摘要:题目1 : String reorder时间限制:10000ms单点时限:1000ms内存限制:256MBDescriptionFor this question, your program is required to process an input string containing only ASCII characters between ‘0’ and ‘9’, or between ‘a’ and ‘z’ (including ‘0’, ‘9’, ‘a’, ‘z’).Your program should reorder and split all input string ch 阅读全文
posted @ 2014-04-12 21:30 z陵 阅读(324) 评论(0) 推荐(0)
摘要:一,c/c++字符串1.C/C++中每个字符串都以字符’\0‘作为结尾,这样我们就能很方便地找到字符串的最后尾部。由于这个原因每个字符串都有一个额外的开销,注意字符串越界的问题;2.C/C++内存模型把字符串常量放到单独的一个内存区域;当几个指针指向相同的字符串常量的时候,他们实际上会指向常量区那个的内存地址;但是用字符串常量初始化数组,情况却不一样,这点很重要,考察你C能力的筹码;test.c:1234567891011121314151617181920212223242526272829#includeintmain(){charstr1[]="helloworld" 阅读全文
posted @ 2014-04-12 10:00 z陵 阅读(2987) 评论(2) 推荐(1)
摘要:【面试题003】c数组做为参数退化的问题,二维数组中的查找一,c数组做为参数退化的问题1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界,通过下面的程序了解数组与指针的区别。array.c:12345678910111213141516171819202122232425262728#include#includeintGetSize(intdata[]){returnsizeof(data);}intmain(){intdata1[]={1,2,3,4,5};/*data1是一个数组*/intsize1=sizeof(data1);int*dat 阅读全文
posted @ 2014-04-11 10:48 z陵 阅读(357) 评论(0) 推荐(0)
摘要:【面试题001】类型转换关键字,空类对象模型,拷贝构造函数,赋值运算符函数一,在C++中,有哪4个与类型转换相关的关键字? 好多书籍,推荐使用类型转换的关键字,但是c风格的类型转换操作,确实很方便,但是不易掌握。1、const_cast号称唯一具有常量性移除的转型操作符,这个说法实在很废话,不解释。平时几乎没有用过,遇到需要这个关键字的时候,都是直接修改了接口的类型,也不会去用这个关键字,一般来说老接口设计有问题啊。明明是const的,非得转成non-const实在别扭。2、dynamic_cast号称安全向下转型(safe downcasting),就是把一个父类型转成它的子类型,如果不是父 阅读全文
posted @ 2014-04-10 20:19 z陵 阅读(827) 评论(0) 推荐(0)
摘要:【面试题002】java实现的单例模式,c++实现单例模式,实现禁止拷贝一 c++实现单例模式保证一个类,在一个程序当中只有一个对象,只有一个实例,这个对象要禁止拷贝,注意这里要区别于java。否者的话一个程序当中就可能出现多个对象的拷贝。我们要禁止拷贝,需要将拷贝构造函数以及等号运算符 声明为私有的,并且呢不提供他们的实现。这样子如果我们代码里面有拷贝构造的话,编译时候会出错。仅仅这样子是不够的,我们必须将构造函数声明为私有的,这是为了防止外部呢,任意的构造对象。既然我们将构造函数私有化了,外部就不能通过 Singleton s1; 来定义这样一个对象。那我们就需要提供一个接口让外部呢得到这 阅读全文
posted @ 2014-04-10 20:18 z陵 阅读(512) 评论(0) 推荐(0)
摘要:设计模式就是要降低代码编写过程中出错的概率,以及考虑减少今后代码出问题的概率,不遵守这六个原则现在或者将来出问题的概率会大大增加。目标是,当需求变化时候需要修改代码的时候,某些测试好的逻辑是不需要修改的,你只需要去扩展代码即可满足新的需求。想数据库模式设计一样,也不能一味的遵守第一第二第三范式(一般遵守到这三个范式就可以了),得根据实际情况反复权衡。遵守程度只要在一个合理的范围内,就算是良好的设计。引入中间层或者隔离层,或者上层,来抽象,来封装。类与类之间的关系,数据库中表与表的关系,函数中,一个函数调用另一个函数的关系,递归函数的调用关系 阅读全文
posted @ 2014-04-09 09:21 z陵 阅读(140) 评论(0) 推荐(0)
摘要:定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能是设计模式六项原则中定义最模糊的一个了,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。以前,如果有人告诉我“你 阅读全文
posted @ 2014-04-09 09:20 z陵 阅读(812) 评论(0) 推荐(1)
摘要:定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说, 阅读全文
posted @ 2014-04-09 09:19 z陵 阅读(318) 评论(0) 推荐(0)
摘要:定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1未遵循接口隔离原则的设计)这个图的意思是:类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在着用不到的方法(也就是图 阅读全文
posted @ 2014-04-09 09:18 z陵 阅读(256) 评论(0) 推荐(0)
摘要:定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在java中,抽象 阅读全文
posted @ 2014-04-09 09:17 z陵 阅读(232) 评论(0) 推荐(0)
摘要:肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。定义1:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。定义2:所有引用基类的地方必须能透明地使用其子类的对象。问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时, 阅读全文
posted @ 2014-04-09 09:16 z陵 阅读(200) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/zhengzhb/article/category/926691/1图片素材来源,java学习手册ps.内容为自己整理定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。说到单一职责原则,很 阅读全文
posted @ 2014-04-09 09:15 z陵 阅读(251) 评论(0) 推荐(0)
摘要:时间限制:10000ms单点时限:1000ms内存限制:256MB描述You are given a sequence of integers, A = a1, a2, ... an. A consecutive subsequence of A (say ai, ai+1... aj) is called a "repeated sequence" if it appears more than once in A (there exists some positive k that ai+k= ai, ai+k+1= ai+1, ... aj+k= aj) and it 阅读全文
posted @ 2014-04-09 08:54 z陵 阅读(288) 评论(0) 推荐(0)
摘要:【面试题001-补充】C++ MyString类的封装一,C++ MyString类的封装String.h:123456789101112131415161718192021222324252627282930313233#ifndef_STRING_H_#define_STRING_H_#includeusingnamespacestd;classString{public:String(constchar*str="");String(constString&other);String&operator=(constString&other);S 阅读全文
posted @ 2014-04-09 08:48 z陵 阅读(815) 评论(0) 推荐(0)
摘要:面对问题,理解了思路,但是没有任何想法的时候,不妨从n=1 n=2开始分析下,然后找到递推公式进而成功accept!【二叉树的构建】已知前序和中序遍历序列可以确定这个二叉树。已知中序和后序遍历序列可以确定这个二叉树。层次遍历和后序遍历也可以确定二叉树。二叉排序树和其他遍历序列的结合可以确定二叉树。构建的思路是: 因为树的定义,本身就是一个递归的定义,那么由遍历序列构建树的时候,解决问题的思路往往就是由已知条件,找出树的根节点,然后把大问题,划分成小的问题,现在小的问题是,左右两个子树的问题,返现左右两个子树和原问题是一模一样的,所以可以用递归来解决问,联系子问题和大问题的纽带是当前这颗树的.. 阅读全文
posted @ 2014-04-08 17:05 z陵 阅读(256) 评论(0) 推荐(0)
摘要:我们都知道,已知中序和后序的序列是可以唯一确定一个二叉树的。初始化时候二叉树为:==================中序遍历序列, ======O===========后序遍历序列, =================O红色部分是左子树,黑色部分是右子树,O是根节点如上图所示,O是根节点,由后序遍历可知,根据这个O可以把找到其在中序遍历当中的位置,进而,知道当前这个根节点O的左子树的前序遍历和中序遍历序列的范围。以及右子树的前序遍历和中序遍历序列的范围。到这里返现出现了重复的子问题,而且子问题的规模没有原先的问题大,即红色部分和黑色部分。而联系这两个子问题和原先的大问题的纽带是这... 阅读全文
posted @ 2014-04-08 17:04 z陵 阅读(679) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,节点的值仅限于从0-9,每一个从根节点达到叶子节点的路径代表一个数字。一个例子,如果根节点到叶子节点的路径是1->2->3,那么代表这个数字是123。寻找所有路径代表的数字的和。例如: 1 / \ 2 3从根节点到叶子节点的路径是1->2代表的数字是12.从根节点到叶子节点的路径是1->3代表的数字是13.返回和为 sum = 12 + 13 =25.+++++++++++++++++++++ 阅读全文
posted @ 2014-04-08 17:03 z陵 阅读(232) 评论(0) 推荐(0)
摘要:我们都知道,已知前序和中序的序列是可以唯一确定一个二叉树的。初始化时候二叉树为:==================前序遍历序列, O=================中序遍历序列, ======O===========红色部分是左子树,黑色部分是右子树,O是根节点如上图所示,O是根节点,由前序遍历可知,根据这个O可以把找到其在中序遍历当中的位置,进而,知道当前这个根节点O的左子树的前序遍历和中序遍历序列的范围。以及右子树的前序遍历和中序遍历序列的范围。到这里返现出现了重复的子问题,而且子问题的规模没有原先的问题大,即红色部分和黑色部分。而联系这两个子问题和原先的大问题的纽带是... 阅读全文
posted @ 2014-04-08 17:03 z陵 阅读(433) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }填入每个节点的next指针,如果没有右边的节点,那么这个next指针设置为NULL。初始时候所有歌next指针都设置成NULL。Note:空间复杂度必须是常量级别的。你可以假设这是个完全二叉树 (ie, 所有的... 阅读全文
posted @ 2014-04-08 17:02 z陵 阅读(221) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,寻找值最大的路径。这个路径可以从这个树上面的任意一个节点开始,然后在任意一个节点结束。例如:给定下面的二叉树, 1 / \ 2 3返回6.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, find the maximum path... 阅读全文
posted @ 2014-04-08 17:01 z陵 阅读(244) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树和一个和,判断这个树中是否有一个从根到叶子的路径,使其这个路径上面的所有节点值的和为这个给定的值。并且返回所有等于给定值的路径。例如:给定下面的二叉树,并且和为22。 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回... 阅读全文
posted @ 2014-04-08 16:59 z陵 阅读(444) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树和一个和,判断这个树中是否有一个从根到叶子的路径,使其这个路径上面的所有节点值的和为这个给定的值。例如:给定下面的二叉树,并且和为22。 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回true,因为这里面存在一个根... 阅读全文
posted @ 2014-04-08 16:58 z陵 阅读(244) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,找出他的最小的深度。最小的深度,指的是从根节点到叶子节点的,经历的最多的节点个数。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, find its maximum depth.The maximum depth is the number of nodes al 阅读全文
posted @ 2014-04-08 16:57 z陵 阅读(236) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,找出他的最小的深度。最小的深度,指的是从根节点到叶子节点的,经历的最小的节点个数。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, find its minimum depth.The minimum depth is the number of nodes al 阅读全文
posted @ 2014-04-08 16:56 z陵 阅读(227) 评论(0) 推荐(0)
摘要:利用递归,构造二叉查找树,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给一个升序的单向链表,把他转换成一个二叉查找树++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a singly linked list where elements are sorted in ascending order, convert it to a height bala 阅读全文
posted @ 2014-04-08 16:55 z陵 阅读(218) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个升序的数组,把他转换成一个高度平衡的二叉查找树++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given an array where elements are sorted in ascending order, convert it to a height balanced BST.++++++++++++ 阅读全文
posted @ 2014-04-08 16:54 z陵 阅读(291) 评论(0) 推荐(0)
摘要:本质上是递归遍历左右后在与根节点做判断,本质上是后序遍历++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给你一个二叉树,判断他是否是个有效的二叉查找树(BST)。假定一个BST树按照下面的内容定义:左子树的节点的值都小于父节点。右子树的节点的值都大于父节点。左子树和右子树都得是合法的而二叉查找树。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a bin 阅读全文
posted @ 2014-04-08 16:53 z陵 阅读(217) 评论(0) 推荐(0)
摘要:提到二叉查找树,就得想到二叉查找树的递归定义,左子树的节点值都小于根节点,右子树的节点值都大于根节点。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个n,问有多少个不同的二叉查找树,使得每个节点的值为1...n?例如,给定n=3,你的程序应该返回所有的这5个不同的二叉排序树的个数。 1 3 3 2 1 \ / / / \ \ 3 2 1 1 ... 阅读全文
posted @ 2014-04-08 16:52 z陵 阅读(377) 评论(0) 推荐(0)
摘要:当数组为1,2,3,4,...,n时,基于以下原则构建的BST树具有唯一性:以i为根节点的树,其左子树由[1,i-1]构成,其右子树由[i+1, n]构成。我们假定f(i)为以[1,i]能产生的Unique Binary Search Tree的数目,则如果数组为空,毫无疑问,只有一种BST,即空树,f(0)=1。如果数组仅有一个元素1,只有一种BST,单个节点,f(1)=1。如果数组有两个元素1,2,那么有如下两种可能:1 2 \ / 2 1那么分析可得f(2) = f(0) * f(1),1为根的情况 + f(1) * f(0),2为根的情况再看一看3个元素... 阅读全文
posted @ 2014-04-08 16:51 z陵 阅读(317) 评论(0) 推荐(0)
摘要:本质上是二叉树的层次遍历,遍历层次的过程当中把next指针加上去。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++和问题"Populating Next Right Pointers in Each Node"类似。如果给定的树是任意的二叉树,你先前的方法还能工作吗?笔记:你只能用常量的辅助空间。例如给定的是羡慕的二叉树, 1 / \ 2 3 / \ \ 4 5 7当调用完你的函数后,这个树应该看起来想这... 阅读全文
posted @ 2014-04-08 16:50 z陵 阅读(181) 评论(0) 推荐(0)
摘要:本质上是二叉树的root->right->left遍历。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,就地的把他转换成一个链表。例如:给定 1 / \ 2 5 / \ \ 3 4 6转换后的树应该向这样子: 1 \ 2 \ 3 \ 4 \ 5 \ ... 阅读全文
posted @ 2014-04-08 16:49 z陵 阅读(280) 评论(0) 推荐(0)
摘要:平衡的二叉树的定义都是递归的定义,所以,用递归来解决问题,还是挺容易的额。本质上是递归的遍历二叉树。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,判定他是不是高度平衡的二叉树。对于这个问题,每个节点的两个子树的深度不会相差超过1,那么这样的二叉树就是一个平衡的二叉树+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, 阅读全文
posted @ 2014-04-08 16:48 z陵 阅读(238) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,判断是否他自己的镜像对称的。(以自身中间,为镜像对称的)例如羡慕这个二叉树就是对称的: 1 / \ 2 2 / \ / \3 4 4 3但是下面这个就不是对称的: 1 / \ 2 2 \ \ 3 3笔记:如果你既能迭代的解决这个问题,又能递归的解决这个问题,那么将给你加分。++++++++++++++++++++++++++++++++++++++++++++++... 阅读全文
posted @ 2014-04-08 16:47 z陵 阅读(383) 评论(0) 推荐(0)
摘要:迭代版本用的是二叉树的DFS,中的root->right->left++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定两个二叉树,写一个函数判断他们是否是相同的。如果两个二叉树的结构相同而且每个节点里面的值也相同,那么认为他们是相同的二叉树。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given two binary trees, write a 阅读全文
posted @ 2014-04-08 16:46 z陵 阅读(541) 评论(0) 推荐(0)
摘要:开一个指针数组,中序遍历这个二叉搜索树,将节点的指针依次保存在数组里,然后寻找两处逆序的位置,中序便利里BST得到的是升序序列++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++二叉搜索树(BST)中的两个节点不小心被交换了下。不改变其结构的情况下恢复这个树。笔记:用O(n)的空间复杂度的方法很直接。你能否设计一个常量空间的解决法方案?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 阅读全文
posted @ 2014-04-08 16:45 z陵 阅读(211) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,返回他的Z字形层次遍历的节点的values。(提示,从左到右,然后下一层从右到左,然后再变化方向,就是这样一层一层的遍历)例如: 给定一个二叉树{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7返回的层次遍历的结果是:[ [3], [20,9], [15,7]]+++++++++++++++++++++++++++++++++++++++++++++++... 阅读全文
posted @ 2014-04-08 16:44 z陵 阅读(969) 评论(0) 推荐(0)
摘要:就把vector改成用栈类存放层次遍历的一层的序列++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,自底向上的返回他的层次遍历的节点的values。(提示,从左到右,一层一层的遍历,但是这里是从叶子节点到根节点)例如: 给定一个二叉树{3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7返回的层次遍历的结果是:[ [15,7] [9,20], [3],]+++++++++++++++++++++++++++... 阅读全文
posted @ 2014-04-08 16:43 z陵 阅读(215) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,返回他的层次遍历的节点的values。(提示,从左到右,一层一层的遍历)例如: 给定一个二叉树{1,#,2,3}, 1 \ 2 / 3返回的层次遍历的结果是:[ [3], [9,20], [15,7]]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a b... 阅读全文
posted @ 2014-04-08 16:42 z陵 阅读(184) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,返回他的后序遍历的节点的values。例如: 给定一个二叉树{1,#,2,3}, 1 \ 2 / 3返回[3,2,1].笔记:递归解决方案是微不足道的,你可以用迭代的方法吗?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, retur... 阅读全文
posted @ 2014-04-08 16:41 z陵 阅读(210) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,返回他的中序遍历的节点的values。例如: 给定一个二叉树{1,#,2,3}, 1 \ 2 / 3返回[1,3,2].笔记:递归解决方案是微不足道的,你可以用迭代的方法吗?困惑什么"{1,#,2,3}"的意思吗?> read more on how binary tree is serialized on OJ.二叉树序列化:序列号的二叉树遵循的是层次遍历的顺序,'#'代表 阅读全文
posted @ 2014-04-08 16:25 z陵 阅读(245) 评论(0) 推荐(0)
摘要:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++给定一个二叉树,返回他的前序遍历的节点的values。例如: 给定一个二叉树{1,#,2,3}, 1 \ 2 / 3返回[1,2,3].笔记:递归解决方案是微不足道的,你可以用迭代的方法吗?++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Given a binary tree, retur... 阅读全文
posted @ 2014-04-08 16:15 z陵 阅读(281) 评论(0) 推荐(0)