红黑树是一个更高效的检索二叉树,JDK 提供的集合类TreeMap、TreeSet本身就是一个红黑树的实现。 红黑树的基本操作:插入、删除、左旋、右旋、着色。每插入或者删除一个节点,可能会导致树不在符合红黑树的特征,需要进行修复,进行 “左旋、右旋、着色”操作,使树继续保持红黑树的特性。 建议:想进BAT等名企的童鞋,...
线索二叉树是在二叉树的结点上加上线索的一种数据结构。(说了跟没说似的) 在二叉链存储结构中,存在n+1个空链域(对于n个结点的二叉树),这些空链域可以用来存放某种遍历次序下该结点的前驱结点和后继结点的指针,这些指针被称为线索。加上线索的二叉树就称为线索二叉树,这种加上了线索的二叉链表称为线索链表。
右旋:指的是围绕某个节点向右旋转,也就是顺时针旋转某个节点,此时父节点会被自己的左子节点取代 变色:如果当前节点的左、右子节点均为红色时,因为需要满足红黑树定义的第四条特征 5 平衡二叉树和红黑树的区别 平衡二叉树的左右子树的高度差绝对值不超过1,但是红黑树在某些时刻可能会超过1,只要符合红黑树的五个...
二叉树遍历的时间复杂度从我前面画的前、中、后序遍历的顺序图,可以看出来,每个节点最多会被访问两次,所以遍历操作的时间复杂度,跟节点的个数 n 成正比,也就是说二叉树遍历的时间复杂度是 O(n)。 二叉查找树(Binary Search Tree) 二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于...
二叉树、二叉搜索树(BST)和红黑树是计算机科学中的基本数据结构,它们通常用于有效地组织和管理数据。以下是这三种结构的比较: 二叉树 🌳 二叉树是一种树状数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。在普通的二叉树中,节点间没有特定的排序规则。节点的子节点可以具有任何值,兄弟节点之间也...
红黑树和平衡二叉树(也称为AVL树)都是计算机科学中常用的自平衡二叉查找树,它们在实现和特性上有一些显著的区别。下面我将详细解释这两种数据结构的不同之处: 一、平衡策略 红黑树:红黑树放弃了追求完全平衡,而是追求一种大致的平衡。它通过颜色属性和一系列旋转操作来维持树的平衡性。红黑树的平衡条件相对宽松,允...
平衡二叉树每个结点的平衡因子只能是1,0,-1。若其绝对值超过1,则该二叉排序树就是不平衡的。 如图所示为平衡树和非平衡树示意图: 三、红黑树-R-B Tree,全称是Red-Black Tree 又称为“红黑树”,它一种平衡二叉树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
在所有的树结构,基本上都遵循左小右大的原则。本文分享二叉树、二叉查找树、平衡树和红黑树概念及其性质。 二叉树 二叉树(Binary Tree)是指每个节点最多只有两个分支的树结构(即不存在分支大于 2 的节点),如下图所示: 这是一棵拥有 6 个节点深度为 2(深度从 0 开始),并且根节点为...
一、二叉树和红黑树 1树的概念和特征 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。 2红黑树 红黑二叉树(简称:红黑树),它首先是一棵二叉树,同时也是一棵自平衡的排...
我们知道2-3树能保证在插入元素后,树依然保持平衡状态,它最坏的情况就是所有的子节点都是2-节点,这样树的高度为logN,但是和普通的二叉查找树相比,最坏的情况下树的高度为N,确实能保证最坏情况下的时间复杂度,但是2-3树实现起来过于复杂,所以我们这里介绍一种基于2-3树实现的树结构 —红黑树。