1.树结构:区别于线性数据结构将所有数据排成一排,排列元素更像一颗树。(天然组织结构)效率远高于线性结构
和链表一样,动态数据结构。
天然递归结构:每个节点的左右子树也是二叉树。
2.二叉搜索树又叫二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树:
- 若它的左子树不为空,则左子树上的所有结点都小于根节点上的值
- 若它的右子树不为空,则右子树上的所有结点都大于根节点上的值
- 它的左右子树也分别是二叉搜索树
添加元素:若树为空则直接插入
若树不为空,则按二叉搜索树的性质确定插入位置,再进行插入
特殊情况下:顺序添加元素的时候,二叉搜索树会退化成链表,大大降低二分搜索树的效率;
3.平衡二叉树
最早的可以自平衡的树结构
(1)它的左子树和右子树的高度相差(平衡因子)的绝对值不超过1,
(2)它的左子树和右子树都是一颗平衡二叉树。
平衡二叉树的高度和节点数量之间的关系是O(logn)
怎样的机制实现自平衡:
计算平衡因子