当前位置: 首页 > 面试题库 >

请你来说一说红黑树和AVL树的定义,特点,以及二者区别?

宋勇
2023-03-14
本文向大家介绍请你来说一说红黑树和AVL树的定义,特点,以及二者区别?相关面试题,主要包含被问及请你来说一说红黑树和AVL树的定义,特点,以及二者区别?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

平衡二叉树(AVL树):

平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。一句话表述为:以树中所有结点为根的树的左右子树高度之差的绝对值不超过1。将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只可能是-1、0和1。只要二叉树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。

 

红黑树:

红黑树是一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是红或黑(非红即黑)。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍,因此,红黑树是一种弱平衡二叉树,相对于要求严格的AVL树来说,它的旋转次数少,所以对于搜索,插入,删除操作较多的情况下,通常使用红黑树。

性质:

\1. 每个节点非红即黑

\2. 根节点是黑的;

\3. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的;

\4. 如果一个节点是红色的,则它的子节点必须是黑色的。

\5. 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;

 

区别:

AVL 树是高度平衡的,频繁的插入和删除,会引起频繁的rebalance,导致效率下降;红黑树不是高度平衡的,算是一种折中,插入最多两次旋转,删除最多三次旋转。

 类似资料:
  • 本文向大家介绍请你说一说红黑树的性质还有左右旋转?相关面试题,主要包含被问及请你说一说红黑树的性质还有左右旋转?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 参考回答: 考察点:算法 公司:京东,阿里巴巴 1)平衡二叉树(AVL树): 红黑树是在AVL树的基础上提出来的。 平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。 A

  • 本文向大家介绍请你说一下,B+树和B-树?相关面试题,主要包含被问及请你说一下,B+树和B-树?时的应答技巧和注意事项,需要的朋友参考一下 考察点:树   b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖”; b+树查询必须查找到叶子节点,b树只要匹配到即可不用管元素位置,因此b+树查找更稳定(并不慢); 对于范围查找来说,b+树只需遍历叶子节点链表即可,b树却需要重复地中序遍历

  • 本文向大家介绍请你说一说小根堆特点?相关面试题,主要包含被问及请你说一说小根堆特点?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 堆是一棵完全二叉树(如果一共有h层,那么1~h-1层均满,在h层可能会连续缺失若干个右叶子)。 1)小根堆 若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。 2)大根堆 若根节点存在左子女则根节点的值大于左子女的值;

  • 本文向大家介绍图解红黑树及Java进行红黑二叉树遍历的方法,包括了图解红黑树及Java进行红黑二叉树遍历的方法的使用技巧和注意事项,需要的朋友参考一下 红黑树 红黑树是一种数据结构与算法课堂上常常提到但又不会细讲的树,也是技术面试中经常被问到的树,然而无论是书上还是网上的资料,通常都比较刻板难以理解,能不能一种比较直观的方式来理解红黑树呢?本文将以图形的方式来解释红黑树的插入与删除操作。 对树结构

  • 本文向大家介绍请你说一说strcpy和strlen的区别?相关面试题,主要包含被问及请你说一说strcpy和strlen的区别?时的应答技巧和注意事项,需要的朋友参考一下 strcpy是字符串拷贝函数,原型: char strcpy(char dest, const char *src); 从src逐字节拷贝到dest,直到遇到'0'结束,因为没有指定长度,可能会导致拷贝越界,造成缓冲区溢出漏洞,

  • 本文向大家介绍 请你说一说堆和栈的区别?相关面试题,主要包含被问及 请你说一说堆和栈的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。它与数据结构中的堆是两回事,分配方式类似于链表。 区别