前言
成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。
这几种能力之间的关系大概如下图。编程能力、调试能力和编译部署能力属于最基础的能力。不能精通掌握这三种能力,很难在性能优化能力和业务架构能力方面有所成就。具备了一定的性能优化能力和业务架构能力之后,才能在线运维能力和项目管理能力方面表现优越。团队管理能力是最高能力,它对项目管理能力的依赖度更大。
正文
二叉树
由 n( n > 0)个有限节点组成一个具有层次关系的集合,看起来就像一个倒挂的树,因此称这样的数据结构为树。
一个节点的子节点个数叫做度,通俗的讲就是树叉的个数。树中最大的度叫做树的度,也叫做阶。一个 2 阶树最多有 2 个子节点即最多有 2 叉,因此这样的树称为二叉树,二叉树是树家族中最简单的树。
两个叉的树就是二叉树,可这除了用来按一定结构存放数据外,跟查询性能好像也没关系,不会又是一个没用的噱头吧。
二分查找
听说二叉树的原始威力来源于一种叫做二分查找的算法。
相传在鹦鹉的原始社会,存在着森严的等级制度,每只鸟必须按高矮顺序分出等级和尊卑。
那么问题来了,如下图,怎样才能找出最高、最矮、中等高的那些鹦鹉呢、以及指定高度的那只呢?
第一种方法: 扫描法
一个一个依次测量,完毕后所有的问题都迎刃而解。
这种一个一个依次全部测量的方法叫做扫描,他的缺点很明显,最高和最矮,需要全部测量完毕才能知晓。
而对于指定高度,最好的情况是第一次就找到;最坏的情况是最后一次才找到&