C/C++ 数据结构 —— 树(2)



🎁个人主页: 工藤新一¹

🔍系列专栏: C++面向对象(类和对象篇)

​ 🌟心中的天空之城,终会照亮我前方的路

🎉欢迎大家点赞👍评论📝收藏⭐文章


文章目录

二叉树

一、二叉树的概念与结构

  • 树是一种递归的结构

  • 在树形结构中,我们最常用的就是二叉树一颗二叉树的节点是一个有限的集合 ,该集合由一个根节点,再加上两颗别称为左子树右子树的二叉树组成



二、几种常见的树

2.1二叉树、满二叉树

  • 二叉树 不存在 "度" 大于 2 的节点

  • 二叉树的子树一定有序(有左右之分),次序不能颠倒,因此二叉树是一颗有序树

  • 满二叉树(理想化的二叉树): 二叉树的每一层的节点达到最大值 ,也就是说,如果一个二叉树的层数K ,那么其总节点数是 2k - 1,则其就为满二叉树

  • 满二叉树 :第 K 层节点个数是 2k-1

2.2完全二叉树

  • 满二叉树完全二叉树 中的子集满二叉树是(特殊的)完全二叉树 ),其是一个效率很高的数据结构

对于深度为 K ,有 n 个节点的二叉树,当且仅当其每一个节点都与深度为 K 的满二叉树中编号从 1n 的节点一 一对应时(节点从左到右依次排列)称之为完全二叉树

  • 最后一层节点个数未达到最大:完全二叉树
  • 最后一层节点个数达到最大:即是完全二叉树,又是满二叉树



  • 完全二叉树

  • 非完全二叉树


2.3二叉排序树

常用于非重复元素的排序、搜索;对二叉排序树进行左中右遍历可以获取到有序的元素串



2.4平衡二叉树


注意:对于任意的二叉树都是由下列几种情况复合而成


三、二叉树的性质

二叉树 中,叶子节点个数 == 分支节点个数 + 1



完全二叉树中,最多只有一个度为1的节点: n1 = 0 或 n1 = 1;

因此,给定节点个数 n,即可求得 n0 n1 n2(因为 完全二叉树特点:n1为定值)


🌟 各位看官好,我是工藤新一¹呀~

🌈 愿各位心中所想,终有所致!

相关推荐
Yu_Lijing7 小时前
网络复习篇——网络基础(一)
网络·c++·笔记
Bella的成长园地7 小时前
为什么c++中的条件变量的 wait() 函数需要配合while 循环或谓词?
c++·面试
charlee447 小时前
为什么现代 C++ 库都用 PIMPL?一场关于封装、依赖与安全的演进
c++·智能指针·raii·pimpl·编译防火墙·封装设计
啊阿狸不会拉杆7 小时前
《机器学习导论》第 7 章-聚类
数据结构·人工智能·python·算法·机器学习·数据挖掘·聚类
MSTcheng.7 小时前
CANN ops-math算子的跨平台适配与硬件抽象层设计
c++·mfc
code monkey.7 小时前
【Linux之旅】Linux 进程间通信(IPC)全解析:从管道到共享内存,吃透进程协作核心
linux·c++·ipc
薛定谔的猫喵喵7 小时前
基于C++ Qt的唐代诗歌查询系统设计与实现
c++·qt·sqlite
Re.不晚7 小时前
JAVA进阶之路——数据结构之线性表(顺序表、链表)
java·数据结构·链表
阿昭L7 小时前
C++异常处理机制反汇编(三):32位下的异常结构分析
c++·windows·逆向工程
Cinema KI7 小时前
C++11(下) 入门三部曲终章(基础篇):夯实语法,解锁基础编程能力
开发语言·c++