2018/12/19学习总结

2018/12/19学习总结:
1.线段树学习总结:
线段树是一种二叉树,可以像一般的树那样写成结构体,指针等。
优点:可以用数组来实现树形结构,可以大大简化代码。
数组形式适合在编程竞赛中使用,在已经知道线段树的最大规模的情况下,直接开足够空间的数组,然后在上面建立线段树。
简单的记法: 足够的空间 = 数组大小n的四倍。
实际上足够的空间 = (n向上扩充到最近的2的某个次方)的两倍。
Example:假设数组长度为5,就需要5先扩充成8,8 * 2=16.线段树需要16个元素。如果数组元素为8,那么也需要16个元素。
所以线段树需要的空间是n的两倍到四倍之间的某个数,一般就开4 * n的空间就好,如果空间不够,可以自己算好最大值来省点空间。
用数组表示一棵二叉树的方法:假设某个节点的编号为v,那么它的左子节点编号为2 * v,右子节点编号为2 * v+1。然后规定根节点为1.这样一棵二叉树就构造完成了。通常2 * v在代码中写成 v<<1 。2 * v+1写成 v<<1|1
作者:岩之痕
原文:https://blog.csdn.net/zearot/article/details/52280189

猜你喜欢

转载自blog.csdn.net/weixin_43227938/article/details/85098120