目录
1. 二叉树
1.1. 二叉树
二叉树的递归定义为:
- 二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;
- 左子树和右子树又同样都是二叉树
1.2. 二叉查找树
对于树中每个节点:
- 左子树上所有结点的值均小于或等于它根结点的值。
- 右子树上所有结点的值均大于或等于它根结点的值。
- 左、右子树也分别为二叉查找树。
查找的时间复杂度
- 根结点出发,沿某一个路径朝叶子结点前进。因此查找中数据比较次数与树的形态密切相关。
- 当树中每个结点左右子树高度大致相同时,树高为log2(N)。查找的平均时间复杂度为O(log2(N))。
- 单支树结构,此时树高n。平均查找长度为(n+1)/2,时间复杂度为O(N)。
1.3. 平衡二叉树
在符合二叉查找树的条件下,满足任何节点的两个子树的高度最大差为1。
时间复杂度
- 查找
最坏的情况也是O(log2(N))
- 插入
插入结点操作最多只需要旋转1次
- 删除
每一次删除操作最多需要log2(N)次旋转