树:二叉树,完全二叉树,满二叉树,平衡二叉树,二叉搜索树,红黑树,的原理及其应用

树:二叉树,完全二叉树,满二叉树,平衡二叉树,二叉搜索树,红黑树,的原理及其应用这里写目录标题树二叉树的原理精讲二叉搜索树插入节点二叉搜索树删除节点二叉树的遍历树树状图是一种数据结构 它是由 n n gt 1 个有限结点组成一个具有层次关系的集合 把它叫做 树 是因为它看起来像一棵倒挂的树 也就是说它是根朝上 而叶朝下的 每个结点有零个或多个子结点 没有父结点的结点称为根结点 每一个非根结点有且只有一个父结点 除了根结点外 每个子结点可以分为多个不相交的子树 二叉树的原理精讲二叉树是一个每个结点最多只能有两个分支的树 左边的分支称之为左子树 右边的分支称之为右子

  1. 树状图是一种数据结构,它是由 n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
  2. 每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除 了根结点外,每个子结点可以分为多个不相交的子树;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


二叉树的原理精讲

二叉树是一个每个结点最多只能有两个分支的树,左边的分支称之为左子树,右边的分支称之为右子树.

  1. 完全二叉树:若设二叉树的高度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有叶 子节点,并且叶子结点都是从左到右依次排布,这就是完全二叉树(堆就是完全二叉树)。
  2. 满二叉树:除了叶结点外每一个结点都有左右子节点且叶子结点都处在最底层的二叉树。
  3. 平衡二叉树:又被称为 AVL 树,它是一颗空树或左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都 是一棵平衡二叉树
  4. 二叉搜索树:又称二叉查找树、二叉排序树(Binary Sort Tree)。它是一颗空树或是满足下列性质的二叉树: (1)若左子树不空,则左子树上所有节点的值均小于或等于它的根节点的值;(2)若右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值; (3)左、右子树也分别为二叉排序树。
  5. 红黑树:是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质: (1)节点是红色或黑色; (2)根节点是黑色; (3)所有叶子节点都是黑色; (4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节 点。(5)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

完全二叉树

满二叉树

平衡二叉树

二叉搜索树

二叉搜索树插入节点

将要插入的结点 e,与节点 root 节点进行比较,若小于则去到左子树进行比较,若大于则去到右子树进行比较,重复以上 操作直到找到一个空位置用于放置该新节点。

二叉搜索树删除节点

将要删除的节点的值,与节点 root 节点进行比较,若小于则去到左子树进行比较,若大于则去到右子树进行比较,重复以 上操作直到找到一个节点的值等于删除的值,则将此节点删除。删除时有 4 中情况须分别处理:

  1. 删除节点不存在左右子节点,即为叶子节点,直接删除
  2. 删除节点存在左子节点,不存在右子节点,直接把左子节点替代删除节点
  3. 删除节点存在右子节点,不存在左子节点,直接把右子节点替代删除节点
  4. 删除节点存在左右子节点,则取左子树上的最大节点或右子树上的最小节点替换删除节点。

红黑树

二叉树的遍历

二叉树的遍历是指从根结点出发,按照某种次序依次访问所有结点,使得每个结点被当且访问一次。共分为四种方式:

  1. 前序遍历 – 先访问根节点,然后前序遍历左子树,再前序遍历右子树
  2. 中序遍历 – 先访问根节点的左子树,然后访问根节点,最后遍历右子树
  3. 后序遍历 – 从左到右,先叶子后节点的方式遍历访问左右子树,最后访问根节点
  4. 层序遍历 – 从根节点从上往下逐层遍历,在同一层,按从左到右的顺序对节点逐个访问

前序遍历示意图:在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228567.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:43
下一篇 2026年3月16日 下午6:44


相关推荐

  • h3c交换机重启_h3c交换机清空配置命令

    h3c交换机重启_h3c交换机清空配置命令h3c交换机清空配置命令H3CCAS云计算管理平台融合了华三通信在网络安全领域的积累,通过对IEEE802.1Qbg(EVB)标准的支持,为虚拟机在安全、可视、可监管的环境下运行奠定了基础。下面是小编收集的h3c交换机清空配置命令,希望大家认真阅读!一.用户配置:system-view[H3C]superpasswordH3C设置用户分级密码[H3C]undosuperpasswor…

    2022年6月20日
    126
  • 图像降采样原理_降采样滤波

    图像降采样原理_降采样滤波转自:http://www.lofter.com/postentry?from=search&permalink=1cb3111d_6ee95871、先说说这两个词的概念: 降采样

    2022年8月2日
    12
  • GMapping代码解析[通俗易懂]

    GMapping代码解析[通俗易懂]前言:   最近正好用到GMapping,需要改代码,但看过也总是在忘,那干脆写篇博客记录下来同时也可以帮助想要了解GMapping代码的同学。   代码的入口依然是main函数,但GMapping代码中由很多是没有用的,所以并不需要挨个看,可以说代码的作者代码能力挺强但代码风格却是不敢恭维。这里就不带大家挨个文件度代码,只是对几个主要的函数进行介绍。   …

    2022年6月16日
    42
  • Werkstatt Munchen_we.elk

    Werkstatt Munchen_we.elkWSGIapplication接收两个参数:“environment”和“start_response”。requestclass可以包装environ,方便对environ进行操作fromwerkzeug.wrappersimportRequest,Responsedefapplication(environ,start_response):request=Request(environ)response=Response(“Hello%s!”%r

    2022年10月6日
    3
  • XCode 打包问题巧遇

    XCode 打包问题巧遇

    2021年11月30日
    50
  • 【常用传感器】DS18B20温度传感器原理详解及例程代码

    【常用传感器】DS18B20温度传感器原理详解及例程代码数字温度传感器 DS18B20 传感器参数

    2026年3月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号