二叉树(Binary Tree)是一种每个节点最多有两个子节点的树形数据结构,这两个子节点分别称为左子节点右子节点。二叉树是计算机科学中最基础、最常用的树结构之一,广泛应用于搜索、排序、表达式解析等领域!

核心特点

  1. 节点结构
    每个节点包含三部分:

    • 数据域(存储值)

    • 左指针(指向左子节点)

    • 右指针(指向右子节点)

  2. 递归定义
    二叉树可以是:

    • 空树(无节点),或

    • 根节点 + 左子树(二叉树) + 右子树(二叉树)

  3. 子树有序性
    左右子树的顺序不能颠倒(即使只有一个子节点,也需明确是左还是右)。

 

  • 节点1是根,2和3是1的左右子节点。

  • 节点2的左子节点是4,右子节点是5。

  • 节点4和5是叶子节点(无子节点)。

到这应该了解了什么是二叉树了,然后再介绍几个基础二叉树的类型。

1.满二叉树

可以这么理解:一棵二叉树是满二叉树,当且仅当每个节点要么是叶子节点,要么恰好有两个子节点。

若满二叉树的高度为h,则节点总数为2^h-1;

2.完全二叉树

定义:

一棵二叉树是完全二叉树,当且仅当:

  • 除最后一层外,所有层都被完全填满(即达到最大节点数),且

  • 最后一层的所有节点都连续集中在左侧(中间不能有空缺)这个很重要!

       

        ×

3.二叉搜索树

又称二叉查找树二叉排序树,是一种节点值有序排列的特殊二叉树,支持高效的动态查找、插入和删除操作。

二叉搜索树满足以下递归性质

  1. 左子树中所有节点的值小于当前节点的值

  2. 右子树中所有节点的值**大于(或等于)**当前节点的值;

  3. 每个节点的左、右子树本身也是二叉搜索树

  4. 一般不允许重复值(可根据具体实现决定)。

假设要查找7:

  • 从根 8 开始,7 < 8 → 走左子树;

  • 到节点 37 > 3 → 走右子树;

  • 到节点 67 > 6 → 走右子树;

  • 找到 7,查找成功。

应用场景

  • 动态集合的查找(如C++ STL的setmap

  • 数据库索引(B+树是BST的扩展)

  • 表达式求值与符号表管理

二叉搜索树 = 二分查找思想 + 二叉树结构,既支持高效查找,又能动态维护数据,但必须注意保持平衡以避免性能退化。

4.平衡二叉搜索树(红黑树)

这个和二叉搜索树就多了一个“平衡”,它首先满足二叉搜索树的所有性质。

平衡体现在哪里呢?任意节点的左右子树高度差 ≤ 1

实际应用:

  • 数据库索引:AVL树和红黑树用于实现内存索引

  • 动态排序:AVL树可实时维护有序数据;

  • 优先队列红黑树实现高效插入/删除的优先队列

平衡二叉搜索树 = 二叉搜索树 + 自动平衡机制,通过牺牲少量维护成本,换取稳定的 O(log n) 性能,是高性能存储与检索的核心数据结构

就简单记一下,更详细的版本去看代码随想录

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

示波器探头接口类型与PINTECH品致探头选型指南

一、示波器探头接口类型及技术特点1. BNC接口&#xff1a;通用型主流标准- 优势&#xff1a;75%以上示波器标配接口&#xff0c;具备阻抗匹配灵活&#xff08;50Ω/1MΩ&#xff09;、插拔稳定、抗干扰性强等特点。 - 应用场景&#xff1a;适用于大多数示波器&#xff08;如Le…

Spring之【Bean工厂后置处理器】

目录 BeanFactoryPostProcessor BeanDefinitionRegistryPostProcessor 使用一下Bean工厂后置处理器 定义包扫描范围 定义一个组件Bean 定义一个普通的类 自定义一个组件类实现Bean工厂后处理器 测试类 BeanFactoryPostProcessor 该接口是Spring提供的扩展点之一是一个…

【C++】第十八节—一文万字详解 | map和set的使用

嗨&#xff0c;我是云边有个稻草人&#xff0c;与你分享C领域专业知识(*^▽^*) 《C》本篇文章所属专栏—持续更新中—欢迎订阅— 目录 一、序列式容器和关联式容器 二、set系列的使用 2.1 set和multiset参考⽂档 2.2 set类的介绍 2.3 set的构造和迭代器 2.4 set的增删查…

Java 大视界 -- Java 大数据在智能交通自动驾驶车辆与周边环境信息融合与决策中的应用(357)

Java 大视界 -- Java 大数据在智能交通自动驾驶车辆与周边环境信息融合与决策中的应用&#xff08;357&#xff09;引言&#xff1a;正文&#xff1a;一、Java 构建的环境信息融合架构1.1 多传感器数据实时关联1.2 动态障碍物轨迹预测二、Java 驱动的决策系统设计2.1 紧急决策与…

单细胞转录组学+空间转录组的整合及思路

一、概念 首先还是老规矩&#xff0c;处理一下概念问题&#xff0c;好将之后的问题进行分类和区分 单细胞转录组&#xff1a;指在单个细胞水平上对转录组&#xff08;即细胞内所有转录出来的 RNA&#xff0c;主要是 mRNA&#xff09;进行研究的学科或技术方向&#xff0c;核心…

用Python实现神经网络(五)

这一节告诉你如何用TensorFlow实现全连接网络。安装 DeepChem这一节&#xff0c;你将使用DeepChem 机器学习工具链进行实验在网上可以找到 DeepChem详细安装指导。Tox21 Dataset作为我们的建模案例研究&#xff0c;我们使用化学数据库。毒理学家很感兴趣于用机器学习来预测化学…

ReasonFlux:基于思维模板与分层强化学习的高效推理新范式

“以结构化知识压缩搜索空间&#xff0c;让轻量模型实现超越尺度的推理性能” ReasonFlux 是由普林斯顿大学与北京大学联合研发的创新框架&#xff08;2025年2月发布&#xff09;&#xff0c;通过 结构化思维模板 与 分层强化学习&#xff0c;显著提升大语言模型在复杂推理任务…

PHP与Web页面交互:从基础表单到AJAX实战

文章目录 PHP与Web页面交互:从基础到高级实践 1. 引言 2. 基础表单处理 2.1 HTML表单与PHP交互基础 2.2 GET与POST方法比较 3. 高级交互技术 3.1 AJAX与PHP交互 3.2 使用Fetch API进行现代AJAX交互 4. 文件上传处理 5. 安全性考量 5.1 常见安全威胁与防护 5.2 数据验证与过滤 …

OpenCV基本的图像处理

参考资料&#xff1a; 参考视频 视频参考资料:链接: https://pan.baidu.com/s/1_DJTOerxpu5_dSfd4ZNlAA 提取码: 8v2n 相关代码 概述&#xff1a; 因为本人是用于机器视觉的图像处理&#xff0c;所以只记录了OpenCV的形态学操作和图像平滑处理两部分 形态学操作&#xff1a;…

Git 与 GitHub 学习笔记

本文是一份全面的 Git 入门指南,涵盖了从环境配置、创建仓库到日常分支管理和与 GitHub 同步的全部核心操作。 Part 1: 初始配置 (一次性搞定) 在开始使用 Git 之前,需要先配置好你的电脑环境。(由于网络的原因,直接使用https的方式拉取仓库大概率是失败的,故使用ssh的方…

文件系统-文件存储空间管理

文件存储空间管理的核心是空闲块的组织、分配与回收&#xff0c;确保高效利用磁盘空间并快速响应文件操作&#xff08;创建、删除、扩展&#xff09;。以下是三种主流方法&#xff1a;1. 空闲表法&#xff08;连续分配&#xff09;原理&#xff1a;类似内存动态分区&#xff0c…

python爬虫实战-小案例:爬取苏宁易购的好评

一、项目背景与价值1 为什么爬取商品好评&#xff1f; 消费者洞察&#xff1a;分析用户真实反馈&#xff0c;了解产品优缺点 市场研究&#xff1a;监测竞品评价趋势&#xff0c;优化产品策略二.实现代码from selenium import webdriver from selenium.webdriver.edge.options i…

Spring Boot环境搭建与核心原理深度解析

一、开发环境准备 1.1 工具链选择 JDK版本&#xff1a;推荐使用JDK 17&#xff08;LTS版本&#xff09;&#xff0c;与Spring Boot 3.2.5完全兼容&#xff0c;支持虚拟线程等JDK 21特性可通过配置启用构建工具&#xff1a;Maven 3.8.6&#xff08;配置阿里云镜像加速依赖下载…

Java自动拆箱机制

在黑马点评项目中&#xff0c;提到了一个细节&#xff0c;就是Java的自动拆箱机制&#xff0c;本文来简单了解一下。Java 的​​自动拆箱机制&#xff08;Unboxing&#xff09;​​是一种编译器层面的语法糖&#xff0c;用于简化​​包装类对象​​&#xff08;如 Integer、Boo…

哈希算法(Hash Algorithm)

哈希算法&#xff08;Hash Algorithm&#xff09;是一种将任意长度的数据映射为固定长度的哈希值&#xff08;Hash Value&#xff09;的算法&#xff0c;广泛应用于密码学、数据完整性验证、数据结构&#xff08;如哈希表&#xff09;和数字签名等领域。&#x1f9e0; 一、哈希…

黑马点评使用Apifox进行接口测试(以导入更新店铺为例、详细图解)

目录 一、前言 二、手动完成接口测试所需配置 三、进行接口测试 一、前言 在学习黑马点评P39实现商铺缓存与数据库的双写一致课程中&#xff0c;老师使用postman进行了更新店铺的接口测试。由于课程是22年的&#xff0c;按照我从24年JavaWebAI课程所学习使用的Apifox内部其实…

Ubuntu 虚拟机配置 与Windows互传文件

在VMware中为Ubuntu虚拟机设置共享文件夹 设置共享文件夹可以传递大量文件 在VMware的设置中打开共享文件夹功能&#xff0c;并设置共享文件夹的目录。 点击添加后&#xff0c;选择一个电脑上的文件夹&#xff0c;这个文件夹最好是新建的空的。 完成后在“文件夹”列表中就…

机器学习对词法分析、句法分析、浅层语义分析的积极影响

机器学习在自然语言处理的词法、句法及浅层语义分析中产生了革命性影响&#xff0c;显著提升了各任务的精度和效率。以下是具体影响及实例说明&#xff1a;​​一、词法分析​​1. ​​中文分词​​​​提升歧义消解能力​​&#xff1a;传统方法依赖规则或统计&#xff0c;但深…

初学者STM32—USART

一、简介USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步/异步收发器&#xff09;是一种常见的串行通信协议&#xff0c;广泛应用于微控制器、传感器、模块和其他电子设备之间的数据传输。本节课主要学习USART的基本结构以及其…

A316-V71-Game-V1:虚拟7.1游戏声卡评估板技术解析

引言 随着游戏产业的蓬勃发展&#xff0c;沉浸式音频体验成为提升游戏体验的关键因素。本文将介绍一款专为游戏音频设计的评估板——A316-V71-Game-V1&#xff0c;这是一款基于XMOS XU316技术的虚拟7.1游戏声卡评估平台。产品概述 A316-V71-Game-V1是一款专为虚拟7.1游戏声卡设…