二叉树
概念:
1>二叉树的有序树
2>度每个节点下的节点数
完全二叉树:
根下的左右是满的
非完全二叉树:
根下的左右不满
二叉树的保存方式:
顺序保存:
保存少量数据,花费大量空间(???要它干嘛)
链式保存:
三顺遍历:
先序:
根左右 找根->左子树->右子树
画外圈
中序:
左根右 先左树->根->右树
tips:投影到坐标轴下
后续:左右根
先左树后右树,摘干净
按层:
从上到下,从左到右
查找和排序
查找:
直接查找,从头到尾,查找每一个数据
折半查找:(越靠后的数据越快找到,越靠前的数据找的越慢)
数据事先要从小到大排好
low在最低
high在最高
mind=(low+high)/2
比较mind内的数据
1> 数据>要找的 往左找,high=mid-1
2> 数据<要找的 往右找,low=mid+1
hash查找:散列表查找 --重中之重
hash因子(装填因子):一般是0.75
原数组大小/因子=(向上取整)的数
创建新的数组大小为(向上取整)的数
取【0-(向上取整)的数】 中最大的素数(只能被1与自身整除的数)
将原数组中的数据,对该最大的素数取余
得到的余数 可以得到该数据在新数组的位置
若产生冲突,即原数组两个数据 取余结果相同
解决方法
开放地址法:该位置被占 优先往后找位置 直到找到没有数据的位置,
将这个后到的数据放进去。