当前位置: 首页 > news >正文

Day20-二叉树基础知识

二叉树(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.lryc.cn/news/596504.html

相关文章:

  • 智能Agent场景实战指南 Day 18:Agent决策树与规划能力
  • Java 动态导出 Word 登记表:多人员、分页、动态表格的最佳实践
  • IntelliJ IDEA (2024.3.1)优雅导入 Maven 项目的两种方式详解
  • 【IDEA】如何在IDEA中通过git创建项目?
  • IDEA-通过IDEA导入第三方的依赖包
  • Spring5的IOC原理
  • Node.js:Web模块、Express框架
  • Java自动拆箱机制
  • day059-zabbix自定义监控与自动发现
  • 支付网关系统前后端鉴权方案
  • Linux笔记1——简介安装
  • 【实时Linux实战系列】实时文件系统的特性与优化
  • RK3568 Linux驱动学习——SDK烧录
  • Pandas核心数据结构详解
  • 拉普拉斯变换的理解
  • 【Lucene】架构
  • React 项目性能瓶颈分析
  • 力扣刷题 -- 572.另一颗树的子树
  • rk平台(rv1126/rk3588)音视频-交叉编译FFmpeg7.1
  • 蔚来汽车视觉算法面试30问全景精解
  • 【OpenCV篇】OpenCV——01day.图像基础
  • Redis 八股面试题
  • AI视频-剧本篇学习笔记
  • 猎板 PCB:多场景适配下印制线路板的材料选择优化策略
  • 《2025年5月鸽哒IM即时通讯原生双端APP源码解析:支持视频通话与实时语音(附实测数据)》
  • C语言:函数基础
  • 博途V18软件Automation License Manager中发生了内部错误解决方法
  • SMTP+VRRP实验
  • 14.8 LLaMA2-7B×Dolly-15K实战:从准确率63%到89%,如何用优质数据让大模型性能飙升42%?
  • C语言(20250722)