1.树结构:区别于线性数据结构将所有数据排成一排,排列元素更像一颗树。(天然组织结构)效率远高于线性结构

和链表一样,动态数据结构。

天然递归结构:每个节点的左右子树也是二叉树。

2.二叉搜索树又叫二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树:

  • 若它的左子树不为空,则左子树上的所有结点都小于根节点上的值
  • 若它的右子树不为空,则右子树上的所有结点都大于根节点上的值
  • 它的左右子树也分别是二叉搜索树

二叉搜索树,平衡二叉树(AVL)

添加元素:若树为空则直接插入
若树不为空,则按二叉搜索树的性质确定插入位置,再进行插入

特殊情况下:顺序添加元素的时候,二叉搜索树会退化成链表,大大降低二分搜索树的效率;

3.平衡二叉树

最早的可以自平衡的树结构

(1)它的左子树和右子树的高度相差(平衡因子)的绝对值不超过1,

(2)它的左子树和右子树都是一颗平衡二叉树。

平衡二叉树的高度和节点数量之间的关系是O(logn)

怎样的机制实现自平衡:

计算平衡因子

二叉搜索树,平衡二叉树(AVL)

左旋转和右旋转

什么时候维护平衡:当加入节点后,沿着节点向上维护平衡性

右旋转 LL新插入的节点在不平衡的左孩子的左侧

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

左旋转:RR

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

LR

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

二叉搜索树,平衡二叉树(AVL)

删除:和插入元素一样

 

相关文章: