首页 > 编程语言 >【JavaSE】数据结构(树:二叉查找树、平衡二叉树、AVL树、红黑树)

【JavaSE】数据结构(树:二叉查找树、平衡二叉树、AVL树、红黑树)

时间:2023-12-09 17:14:19浏览次数:44  
标签:左子 右子 AVL 二叉树 红黑树 平衡 节点

度:每个节点的子节点数量
树高:树的总层数
根节点:入度为0的节点

二叉树

每个节点最多有两个子节点

二叉查找树

任意节点左子树上的节点都小于当前节点,右子树上的节点都大于当前节点

平衡二叉树

任意节点的左右子树的高度差不超过1

AVL树

AVL 树是一种平衡二叉树,得名于其发明者的名字( Adelson-Velskii 以及 Landis)。

  1. 首先是一个二叉查找树
  2. 然后任意节点的左右子树的高度差(平衡因子)不超过1

维护平衡

需要沿着从被插入/删除的节点到根的路径对树进行维护

  1. 从被插入/删除的节点开始,不断地往父节点方向寻找不平衡的节点
  2. 以不平衡的节点作为支点对子树进行旋转(左旋/右旋)

旋转情况:
左左(根节点的左子树的左子树中出现插入不平衡):一次右旋
左右(根节点的左子树的右子树中出现插入不平衡):先局部(根节点左子树)左旋,再整体右旋
右右(根节点的右子树的右子树中出现插入不平衡):一次左旋
右左(根节点的右子树的左子树中出现插入不平衡):先局部(根节点右子树)右旋,再整体左旋

红黑树

红黑树是一种自平衡的二叉搜索树。每个节点额外存储了一个 color 字段 ("RED" or "BLACK"),用于确保树在插入和删除时保持平衡。

红黑树不是高度平衡的,而是通过红黑规则进行平衡调整

红黑树添加节点的规则

添加节点默认是红色的效率高

标签:左子,右子,AVL,二叉树,红黑树,平衡,节点
From: https://www.cnblogs.com/Eve7Xu/p/17888244.html

相关文章

  • 110. 平衡二叉树
    目录题目自顶向下自顶向下正解自底向上(优)题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。自顶向下首先,对当前节点进行处理,计算左孩子的高度,右孩子的高度,两者高度差若大......
  • 4.对称二叉树
    101.对称二叉树1、概要给你一个二叉树的根节点root,检查它是否轴对称。判断对称二叉树要比较的不是左右节点!是根节点的左子树与右子树是不是相互翻转。其实要比较的是两个树,即根节点的左右子树。两个子树的里侧和外侧是否相等。只能是“后序遍历”,要通过递归函数的返回......
  • 3.翻转二叉树
    226.翻转二叉树1、概要给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。想要翻转它,其实就把每一个节点的左右孩子交换一下就可以关键在于遍历顺序选择哪一种,遍历的过程中去翻转每一个节点的左右孩子就可以达到翻转效果。中序不方便,会把某些节点的左右孩子翻转......
  • 全局平衡二叉树学习笔记 && [SDOI2017]切树游戏解题报告
    首先,任何一个卡树剖的出题人都很没有素质前言2023年8月22日,XDFnoip模拟赛场上,神犇liuhangxin自己发明了矩阵乘法维护FWT,可是出成绩的时候发现本题挂了30分。2023年9月22日,菜鸡cool_milo看到了liuhangxin的题解,但是由于太菜,并没有看懂。2023年10月22日,菜......
  • 2.二叉树层序遍历
    107.二叉树的层序遍历II相对于102.二叉树的层序遍历,就是最后把result数组反转一下就可以了。classSolution{//利用链表可以进行o(1)头部插入publicLinkedList<List<Integer>>res=newLinkedList<List<Integer>>();publicList<List<Integer>>levelOrd......
  • 1.二叉树
    二叉树的种类满二叉树满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。完全二叉树完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边......
  • 第10章. 红黑树
    红黑树(RedBlackTree)红黑树性质null节点只是一种记号,并不存储真实数据,也不是红黑树中的实际节点,其作用是方便程序员在设计和编程时理解节点的操作规则,在实际应用中并没有实际意义。红黑树的等价变换红黑树和4阶B树(2-3-4树)具有等价性红黑树是平衡二叉搜索树,而B树是......
  • 第8章. AVL树
    AVL树AVL树是在二叉搜索树上加上自平衡的功能。AVL树是最早发明的自平衡二叉搜索树之一。AVL取名于两位发明者的名字:G.M.Aelson-Velsky和E.M.Landis。1.1平衡因子平衡因子(BalanceFactor):某节点的左右子树高度差平衡因子=左子树高度-右子树高度1.2AVL树特点......
  • 第5章. 二叉树
    二叉树一、树的基本概念节点、根节点、父节点、子节点、兄弟节点一棵树可以没有任何节点,称为空树一棵树可以只有一个节点,也就是只有根节点子树、左子树、右子树节点的度:子树的个数树的度:所有节点度中的最大值叶子节点:度为0的节点非叶子节点:度不为0的节点层数:根节点......
  • 17_二叉树的所有路径
    二叉树的所有路径给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。示例1:输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:root=[1]输出:["1"]【思路】题目要求从根节点到叶子的路径,所以需要......