二叉树的性质
性质1 在二叉树的第i层上至多有2(i-1)个节点(i>=1).
性质2 深度为k的二叉树至多有2k-1个节点(k>=1).
性质3 对任何一棵二叉树T,若叶子节点数为m,度为2的节点数为n,则m=n+1.
性质4 具有n个节点的完全二叉树的深度为log2n(向下取整)+1。
性质5:如果对于一棵有n个节点的完全二叉树(其深度depth=log2n+1下取整)的节点按层序编号(从第一层到第depth层,每层从左到右),对任一节点i(1 <= i <= n):
1.如果i=1,则节点i是二叉树的根,无双亲;如果i>1,则其双亲节点是i/2(下取整)。
2.如果2i>n,则节点i无左孩子(节点i为叶子节点);否则其左孩子是节点2i;
3.如果2i+1>n,则节点i无右孩子;否则其右孩子节点为2i+1。
一棵深度为k且有2k-1个结点的二叉树称为满二叉树。
编程题
1.全排列
public class FullPermutation {
/**
* @author SHQ
*/
public static void main(String[] args) {
List<Integer> s = new ArrayList<Integer>();
List<Integer> rs = new ArrayList<Integer>();
for(int i = 1; i <= 3; i++)
s.add(i);
pl(s,rs);
}
public static void pl(List<Integer> s,List<Integer> rs){
// 递归出口
if(s.size()==1)
{
rs.add(s.get(0));
System.out.println(rs.toString());
rs.remove(rs.size()-1);
}else{
for(int i = 0; i < s.size(); i++){
rs.add(s.get(i));
List<Integer> tmp = new ArrayList<Integer>();
for(Integer a:s)
tmp.add(a);
tmp.remove(i);
pl(tmp,rs);
rs.remove(rs.size()-1);
}
}
}
}
2.判断回文串的最大长度。
附 58校招笔试内容总结
1.根据二叉树的先序遍历、后序遍历,得出中序遍历结果。
已知前序遍历序列和中序遍历序列,可以唯一确定一颗二叉树。
已知后序遍历序列和中序遍历序列,可以唯一确定一颗二叉树。
已知前序遍历序列和后序遍历序列,是不能确定一颗二叉树的。
2.各种排序算法中时间复杂度为O(nlogn),且稳定的排序算法
HTTP
-
HTTP 报文结构是怎样的?
-
HTTP有哪些请求方法?
-
GET 和 POST 有什么区别?
-
如何理解 URI?
-
如何理解 HTTP 状态码?
-
简要概括一下 HTTP 的特点?HTTP 有哪些缺点?
-
对 Accept 系列字段了解多少?
-
对于定长和不定长的数据,HTTP 是怎么传输的?
-
HTTP 如何处理大文件的传输?
-
HTTP 中如何处理表单数据的提交?
-
HTTP1.1 如何解决 HTTP 的队头阻塞问题?
-
对 Cookie 了解多少?
-
如何理解 HTTP 代理?
-
如何理解 HTTP 缓存及缓存代理?
-
为什么产生代理缓存?
-
源服务器的缓存控制
-
客户端的缓存控制
-
什么是跨域?浏览器如何拦截响应?如何解决?