关于平衡二叉树了解的还是太少,遂记录如下。
- AVL树的前世今生:二叉搜索树(Binary Search Tree)
二叉搜索树,是因为这种二叉树能大幅度提高搜索效率。如果一个二叉树满足:对于任意一个节点,其值不小于左子树的任何节点,且不大于右子树的任何节点(反之亦可),则为二叉搜索树。BST如果按照中序排序的话是一个有序序列。BST的平均查找时间复杂度为O(logn),但是极端情况下,假如一开始建树的时候是有序序列,那么查找时间复杂度可以到O(n), 构建树的时间复杂度为O(nlogn),为了解决这一问题,引人AVL tree。从此我们的主人公开始登场。
- AVL树的优势
由于AVL tree要求左右子树的高度差不大于1,因此这就保证了在建树时不会出现树退化为链表的情形。查找的时间复杂度可以保证为O(logn), 建树时间复杂度依然为O(nlogn)。
- AVL树的建树过程
主要问题:当二叉排序树不平衡时有几种情形,具体是通过什么方法使树平衡?是否有可以借鉴的规律?
具体参考1
参考:
1 看图说话之平衡二叉排序树(AVL树)
网友评论