笔试题目整理

<1> 完全二叉树的叶子节点数的计算;

<2> Http的返回码含义

1.完全二叉树的叶子节点数的计算;

  1.完全二叉树

  若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。叶子节点只可能在最大的两层上出现,对任意结点,若其右分支下的子孙最大层次为L,则其左分支下的子孙的最大层次必为L 或 L+1;

  满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。

  如果已知一个完全二叉树的节点数如何来进行计算呢?简单地思路是:直接判断层数:以2位底对节点数进行曲对数log,然后将得到的结果进行取整,取整后+1.一般要求我们熟练知道2的幂次,2的8次方是256,记住一个就好了。

  第一种方式:

  知道了数的深度,我们就可以去自己推测该二叉树的叶子节点数,因为完全二叉树的叶子节点都是集中在最后一层和倒数第二层。

  如果一个题目中的节点数总共为699,如何计算呢?首先699直接获取他的深度:10层,前九层全部铺满为511个节点所以前九层全部铺满,剩余699-511=188个节点,这188全部都是子节点位于第10层,在这188个节点将会占用自己左侧的父节点94个,也就是在第九层会有94个节点被占有,剩余256-94=162个节点,没有子节点了,也就是我们呢想要的叶子节点,此时得到最后的结果是162+188 = 350.一共350个叶子节点。

  第二种方式:

  可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可 知:n0=n2+1,且n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,就可根据完全二叉树的结点总数计算出叶子结点数。

 

关于第二种方式的解释:以及二叉树的度

  首先说说什么是度:通俗的讲二叉树中连接节点和节点的线就是度,有n个节点,就有n-1个度,节点数总是比度要多一个,那么度为0的节点一定是叶子节点,因为该节点的下面不再有线;度为1的节点即:该节点只有一个分支;同理度为2的节点就是有两个分支。在二叉树中不可能存在度为3或大于3的节点!
  关于度和节点之间的关系还有很多公式:度为0的节点数为度为2的节点数加1,即n0=n2+1
这个公式的推理方法如下:
设:
k:总度数
k+1:总节点数
n0:度为0的节点
n1:度为1的节点
n2:度为二的节点
根据二叉树中度和节点的守衡原理,可列出以下一组方程:
k=n2*2+n1;
k+1=n2+n1+n0;
将上面两式相减得到:n0=n2+1;
例如:已知767个节点的完全二叉树,求其叶子节点个数:

n0=n2+1;

n=n0+n1+n2;

由上面,消掉n2得到:n=2n0+n1-1;

由于完全二叉树度为1的只有0个或1个两种情况,所以,将0或1带入上面公式,整理后得:

n0=(n+1)/2或者n0=n/2;

看看n是否能被2整除,能则用n0=n/2。否则用n0=(n+1)/2

既叶子节点为n0=(n+1)/2=384

-----------------------------------------------------------------

再比如一棵二叉树有10个度为1的节点,7个度为2的节点,则二叉树有多少个节点(25)

根据刚才说的,节点数比度数多1,可以列出计算式子:

10 * 1 + 7 * 2 + 1 = 25

2.HTTP返回码的含义

HTTP协议状态码表示的意思主要分为五类 ,大体是 :  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
1××   保留   
2××   表示请求成功地接收   
3××   为完成请求客户需进一步细化请求   
4××   客户错误       403?
5××   服务器错误   

100 Continue

指示客户端应该继续请求。回送用于通知客户端此次请求已经收到,并且没有被服务器拒绝。

客户端应该继续发送剩下的请求数据或者请求已经完成,或者忽略回送数据。服务器必须发送
最后的回送在请求之后。

101 Switching Protocols 
服务器依照客服端请求,通过Upgrade头信息,改变当前连接的应用协议。服务器将根据Upgrade头立刻改变协议
在101回送以空行结束的时候。

 Successful 

=================================
200 OK 
指示客服端的请求已经成功收到,解析,接受。

201 Created 
请求已经完成并一个新的返回资源被创建。被创建的资源可能是一个URI资源,通常URI资源在Location头指定。回送应该包含一个实体数据
并且包含资源特性以及location通过用户或者用户代理来选择合适的方法。实体数据格式通过煤体类型来指定即content-type头。最开始服务 器
必须创建指定的资源在返回201状态码之前。如果行为没有被立刻执行,服务器应该返回202。

202 Accepted 
请求已经被接受用来处理。但是处理并没有完成。请求可能或者根本没有遵照执行,因为处理实际执行过程中可能被拒绝。

203 Non-Authoritative Information

204 No Content 
服务器已经接受请求并且没必要返回实体数据,可能需要返回更新信息。回送可能包含新的或更新信息由entity-headers呈现。

205 Reset Content 
服务器已经接受请求并且用户代理应该重新设置文档视图。

206 Partial Content 
服务器已经接受请求GET请求资源的部分。请求必须包含一个Range头信息以指示获取范围可能必须包含If-Range头信息以成立请求条件。

Redirection 
==================================
300 Multiple Choices
请求资源符合任何一个呈现方式。

301 Moved Permanently 
请求的资源已经被赋予一个新的URI。

302 Found 
通过不同的URI请求资源的临时文件。
303 See Other

304 Not Modified 
如果客服端已经完成一个有条件的请求并且请求是允许的,但是这个文档并没有改变,服务器应该返回304状态码。304
状态码一定不能包含信息主体,从而通常通过一个头字段后的第一个空行结束。

305 Use Proxy
请求的资源必须通过代理(由Location字段指定)来访问。Location资源给出了代理的URI。

306 Unused

307 Temporary Redirect

 

Client Error 
=====================
400 Bad Request 
因为错误的语法导致服务器无法理解请求信息。

401 Unauthorized 
如果请求需要用户验证。回送应该包含一个WWW-Authenticate头字段用来指明请求资源的权限。

402 Payment Required 
保留状态码

403 Forbidden 
服务器接受请求,但是被拒绝处理。

404 Not Found 
服务器已经找到任何匹配Request-URI的资源。

405 Menthod Not Allowed 
Request-Line 请求的方法不被允许通过指定的URI。

406 Not Acceptable

407 Proxy Authentication Required

408 Reqeust Timeout 
客服端没有提交任何请求在服务器等待处理时间内。

409 Conflict

410 Gone

411 Length Required 
服务器拒绝接受请求在没有定义Content-Length字段的情况下。

412 Precondition Failed

413 Request Entity Too Large 
服务器拒绝处理请求因为请求数据超过服务器能够处理的范围。服务器可能关闭当前连接来阻止客服端继续请求。

414 Request-URI Too Long 
服务器拒绝服务当前请求因为URI的长度超过了服务器的解析范围。

415 Unsupported Media Type 
服务器拒绝服务当前请求因为请求数据格式并不被请求的资源支持。

416 Request Range Not Satisfialbe

417 Expectation Failed

 

Server Error 
===================================
500 Internal Server Error 
服务器遭遇异常阻止了当前请求的执行

501 Not Implemented 
服务器没有相应的执行动作来完成当前请求。

502 Bad Gateway

503 Service Unavailable 
因为临时文件超载导致服务器不能处理当前请求。

504 Gateway Timeout

505 Http Version Not Supported

 

 

posted @ 2016-09-02 15:53  我所向往的美好  阅读(266)  评论(0编辑  收藏  举报