性质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://blog.csdn.net/sunhuaqiang1/article/details/52060981
总结
面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。
还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。
万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
前端面试题汇总
JavaScript
前端资料汇总