Java 数据结构—树(二叉查找树/平衡二叉树/红黑树)

简介:树是一种数据结构,二叉树是指最多有两颗子树的树。

一、二叉查找树(BST)

  1. 定义:BST全称是Binary Search Tree,又称二叉搜索树,亦称二叉排序树,在一般情况下,查询效率比链表结构要高;

  2. 性质

    A. 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

    B. 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

    C. 任意节点的左、右子树也分别为二叉查找树;

    D. 所有节点存储一个关键字,且没有键值相等的节点。

  3. 遍历方式

    A. 前序遍历:先访问根结点,再遍历左子树,最后遍历右子树;

    B. 中序遍历:先遍历左子树,再访问根结点,最后遍历右子树,该遍历的结果是顺序(有序)的;

    C. 后序遍历:先遍历左子树,再遍历右子树,最后访问根结点。

 

二、平衡二叉树(AVL)

  1. 定义:平衡二叉树(Balanced Binary Tree),具有如下特点

    A. 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1;

    B. 左右两个子树都是一棵平衡二叉树。

  2. 旋转方式

    A. LL(左左)的旋转

    B. RR(右右)的旋转

    C. LR(左右)的旋转

    D. RL(右左)的旋转

 

三、红黑树(RBT)

  1. 定义:红黑树(Red Black Tree)是一个自平衡二叉搜索树,除了满足二叉搜索树的特点外,还具有如下特点

    A. 每个节点颜色不是黑色,就是红色;

    B. 根节点是黑色的;

    C. 如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点);

    D. 对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点;

    E. 每个为空的(NIL或null)叶子节点都是黑色的。

    注意:红黑树的由来是因为二叉查找树可能退化成链表,导致时间复杂度变为O(n),而平衡二叉树维护平衡的代价开销过大

  2. 红黑树的自我修正方式

    A. 改变节点颜色;

    B. 左旋:待旋转的节点从右边上升到父节点就是左旋;

    C. 右旋:待旋转的节点从左边上升到父节点就是右旋;

  3. 应用场景

    A. Java中ConcurrentHashMap和TreeMap底层实现。

 

posted @   如幻行云  阅读(362)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示