NOIP2015
第6题
(1)栈类型题:单栈:问栈顶元素、序列可否、序列操作
(2)操作系统:递归使用栈、广搜使用队列(循环队列,优先队列,双向队列)
循环队列(尾指针+1=头:满,尾=头:空)
编程时:一定要判断队列或栈为空或满。(空不能出,满不能进)(STL不管(内部机器处理))
第7、8题:关于树
(1)判断型题目:具体分析,把树画出来。
拓展:给定二叉树节点数,计算可能性。
(2)树的常识
①二叉树允许空集,树不允许。(空集是一颗二叉树)
②满二叉树:层数i(2i-1每层,总2i-1)n0=n2+1(n0叶子,n2满节点)
③完全二叉树节点n:一共有(int)(log2n)+1层
(3)最小生成树:
①Kruskal:找最小边(如果回路就扔掉(并查集))O(eloge)
②Prim:找点,与点相连所有边中找最小边;邻接矩阵O(n2)
第10题T(n)=1/2n(n+1)+1(注意T是时间的递推公式)
第11题:每个点每个边搜过一遍O(n+e)
第12题:关于哈夫曼树
若有一堆字符要传输:AABABCCABCDECAF用不等长编码表示字母
① 数出现次数A:5 B:3 C:4 D:1 E:1 F:1
② 排序
③ 取小两
④ 左小右大合并相加
⑤ 返回②
⑥ 左0右1,深度搜A:5 11 B:3 01……
计算路径长度:位数乘个数
特点:不会出现一个码是另一个码的前缀,所以可以翻译
三叉树:直接找最小(不是最优,会不满)应该从上至下,保证上面满,下面多出的再放。(往上提)