摘要: 红黑树和平衡二叉树(AVL树)类似,都是在进行插入和删除操作时通过特定旋转保持二叉查找树的平衡,从而获得较高的查找性能。红黑树和AVL树的区别在于平衡二叉树追求的是全局平衡,而红黑树只追求局部平衡,因此在操作时对红黑树的平衡调整更高效。红黑树并不是严格意义上的左右子树深度差不大于1,但它依然保持平衡,并保持好的查找时间复杂度。自从红黑树出来后,AVL树就被放到了博物馆里。 阅读全文
posted @ 2013-04-09 15:33 only_eVonne 阅读(2033) 评论(0) 推荐(0) 编辑
摘要: 平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1<=bf<=1;很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,那么AVL就保持住了(BST)的最好时间复杂度O(logn),所以每次的插入和删除都要确保二叉树的平衡变换规则:插入实例:{4, 5 ,7, 2, 1, 3, 6}实现代码:#include <stdio.h>#include & 阅读全文
posted @ 2013-04-09 14:09 only_eVonne 阅读(297) 评论(0) 推荐(0) 编辑