【算法】二叉树 - 理论基础

news2024/12/24 8:24:12

在这里插入图片描述

1.种类

1.1 满二叉树

只有度为0和2的节点,且度为0的节点都都在同一层。深度为k,有2^k-1个节点。
在这里插入图片描述

1.2 完全二叉树

在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。
在这里插入图片描述

1.2 二叉树搜索树

有数值的有序树

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉排序树

在这里插入图片描述

1.2 平衡二叉树搜索树 AVL(Adelson-Velsky and Landis)

它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
在这里插入图片描述
扩展:

AVL树和红黑树都是自平衡的二叉搜索树,它们都用于保持数据的有序性和平衡性,以便进行高效的搜索、插入和删除操作。尽管如此,它们之间存在一些关键的区别:

平衡要求:

AVL树是严格平衡的,要求任一节点的两个子树的高度差至多为1。这种严格的平衡使得AVL树的高度总是最小的,但这也意味着每次插入或删除操作后,可能需要更多的旋转来重新平衡树。
红黑树则是一种半平衡树,它通过特定的颜色标记(红色或黑色)和规则来维持树的近似平衡,而不追求严格的平衡。这导致红黑树可能比AVL树稍高一些,但在插入和删除操作中需要的旋转次数较少,因此整体性能更优。
性能差异:

在插入和删除操作中,红黑树通常表现得更好,因为它需要的旋转次数少于AVL树,尤其是在频繁的插入和删除操作中。
AVL树在查找操作方面可能略微优于红黑树,因为其严格的平衡性导致树的高度更小。 适用场景:

如果搜索操作远多于插入和删除操作,AVL树可能是更好的选择。 如果插入、删除和搜索操作频率相近,红黑树通常是一个更全面的选择。
Java的java.util.TreeMap和java.util.TreeSet选择使用红黑树作为底层数据结构的原因主要在于红黑树在一般情况下的平均性能表现。由于红黑树在插入和删除操作中的性能优势,它更适合于需要动态调整大小的数据结构。在实践中,红黑树的这些优点通常超过了AVL树在查找操作上的微小优势,特别是在数据集经常发生变化的情况下。

此外,红黑树的实现通常比AVL树更简单,这是因为红黑树的平衡规则较为直观,而且在插入和删除过程中涉及的旋转和重新平衡步骤也相对较少。这简化了代码的编写和维护,也是TreeMap和TreeSet选择红黑树的一个因素。

2.存储方式

2.1 链式存储

使用指针
在这里插入图片描述

2.1 顺序存储

使用数组
在这里插入图片描述
如果父节点的数组下标是 i,那么它的左孩子就是 i * 2 + 1,右孩子就是 i * 2 + 2。

一般使用链式存储二叉树,更易于理解。

3.遍历方式

3.1 深度优先遍历 DFS

先往深走,遇到叶子节点再回走。

  • 前序遍历(递归法,迭代法)
  • 中序遍历(递归法,迭代法)
  • 后序遍历(递归法,迭代法)
    在这里插入图片描述
    栈就是递归的一种实现结构。

3.2 广度优先遍历 BFS

一层一层遍历

  • 层次遍历(迭代法)

使用队列作为辅助实现。

4.定义

public class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
          this.val = val;
          this.left = left;
          this.right = right;
      }
  }
 /

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1855503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“明天下班以后请假了,孩子中考“

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 前几天约服务器…

JavaWeb——MySQL:DQL

3.DQL:查询 查询是使用最多、最频繁的操作,因为前面的修改以及删除,一般会交给数据库专业的人员,对于非数据库专业人员来说,老板一般会放心的让你对数据库只进行查询操作; 3.1 基础查询 3.1.1 查询表全部…

高职人工智能专业实训课之“自然语言处理”

一、前言 在人工智能领域,自然语言处理(NLP)技术日益成为研究和应用的热点。为了满足高职院校对NLP专业实训课程的需求,唯众人工智能教学实训凭借其前沿的教育技术平台,特别是GPU虚拟化技术,为学生提供了高…

什么是超级智能?

“超级智能”可以理解为将多个人的智能、机器智能以及环境智能融合在一起。这个定义强调了跨越不同领域和系统的综合与协同,以实现更强大和高效的智能能力。 多个人的智能融合指的是将多个个体的知识、经验和创造力结合起来。通过协作和信息共享,能够集思…

HTML5文旅文化旅游网站模板源码

文章目录 1.设计来源文旅宣传1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 文旅之行界面演示1.5 文旅之行文章内容界面演示1.6 关于我们界面演示1.7 文旅博客界面演示1.8 文旅博客文章内容界面演示1.9 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目…

上海媒体邀约的类型有哪些?分行业精准邀约

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 上海作为中国最大的城市之一,拥有丰富的媒体资…

【面试干货】数组在内存中的分配

【面试干货】数组在内存中的分配 1. 基本概念2. 数组的内存分配2.1 堆与栈2.2 数组的分配2.3 数组的生命周期 3. 总结 💖The Begin💖点点关注,收藏不迷路💖 数组是一种常用的数据结构,用于存储相同类型的数据元素。理解…

怎么看自己是不是公网IP?

在网络中,每个设备都被分配了一个唯一的IP地址,它可以是公网IP或私有IP。公网IP是可以直接从互联网访问的地址,而私有IP只能在网络内部使用。有时我们需要确定自己是不是拥有公网IP,以便进行远程访问或其他网络操作。本文将介绍如…

Java基础 - 练习(七)根据今天日期获取一周内的日期(GergorianCalendar类)

计算一周内的日期。通过窗口输入今天日期,获取今天是周几。 GergorianCalendar类 public static void dateToWeek3() {Scanner cin new Scanner(System.in);System.out.println("请输入年,月,日:");while (cin.hasNe…

计算机网络知识点整理1

目录 激励的话 一、计算机发展的三个阶段 二、互联网标准化工作 三、互联网的组成 边缘部分 核心部分 电路交换的主要特点 分组交换的主要特点 四、三大交换方式的主要特点 总结 激励的话 没关系的,有三分钟热度,就有三分钟收获 一、计算机…

5个wordpress成品站主题

Sora索啦高端制造业wordpress主题 红色高端制造业wordpress主题,适合外贸企业出海建独立站的wordpress模板。 https://www.jianzhanpress.com/?p5885 Polar钋啦wordpress外贸主题 制造业wordpress网站模板,适合生产制造企业官方网站使用的wordpress外…

MySQL数据库(一):数据库介绍与安装

在嵌入式开发中,数据库的重要性体现在高效的数据存储和管理、数据持久化、复杂查询和处理、数据同步和共享、安全性和可扩展性。常见嵌入式数据库包括SQLite、MySQL、LevelDB等,应用于智能家居、工业控制、车载系统和物联网设备,提升了系统功…

并发编程理论基础——管程(并发编程的万能钥匙)(七)

什么是管程 Java采用了管程技术,synchronized关键字及wait()、notify()、notifyAll()三个方法都是管程的组成部分管程和信号量是等价的,管程和信号量之间可以互相实现英文名:Monitor 直译为监视器管程指的是管理共享变量以及对共享变量的操作…

C#高级知识

注册表技术 注册表是一个庞大的数据库系统,它记录了用户安装在计算机上的软件、硬件信息和每一个程序的相互关系。注册表中存放着很多参数,直接控制整个系统的启动、硬件驱动程序的装载以及应用程序的运行Windows注册表包含Windows安装以及已安装软件和…

物联网开发系列(一)·阿里云平台产品的创建以及设备的添加

目录 1. 物联网概述 2. 消息通讯流程 3. 创建产品与设备 3.1 登陆阿里云平台 3.2 新建产品 3.3 添加设备 1. 物联网概述 物联网(Internet of Things,简称 IoT)是指通过互联网连接各种物理设备和物体,使它们能够进行数…

轻量级的文档管理系统Teedy

什么是 Teedy ? Teedy 是一个轻量级的文档管理系统,具有您可以从昂贵的大型解决方案中获得的所有功能,但仍然易于使用。 软件功能特点: 响应式用户界面光学字符识别LDAP 身份验证(新功能!)支持…

Sublime Text for Mac v4.0 【注册汉化版】代码编辑器(保姆级教程,简单易懂,轻松上手)

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、Sublime Text 安装出现“软件已损坏,无法打开。要移到废纸篓”问题,解决办法: 2、汉化补丁安装3、输入注册码4、查询使用期限 安装完成!!! 效果 一、下…

48岁前TVB力捧花旦嫁香港区议员急流勇退诞4女,跻身名媛圈。

多年来,48岁的杨张新悦(前名张燊悦)的皮肤、发质及身形都保养得宜,令人羡慕不已,日前她更公开多张性感内衣照,不输妙龄少女! 杨张新悦在照片中大晒纤腰,有网民留言:「四十…

揭开手机版淘宝死店采集器的秘密!

自从手机版淘宝死淘死店小桃采集器问世以来,它就成为了众多网友关注的焦点。这个神秘的项目,让人们在感叹科技发展的同时,也不禁好奇它究竟能带给我们怎样的惊喜。那么,这个看似神奇的项目到底是怎么回事呢?让我们一起…