数据结构与算法学习总结(七)——二叉树的概念

2023-05-16

二叉树的定义

二叉树(binary tree)由结点的有限集合构成

这个有限集合或者为空集(empty),或者为由一个根节点(root)及两颗互不相交、分别称作这个根的左子树(left bustree)和右子树(right subtree)的二叉树组成的集合。

二叉树的五种基本形态

二叉树可以是空集合,因此根可以有空的左子树或右子树,或者左右子树都为空。

二叉树相关术语

结点

-子结点、父结点、最左子结点

:若<k,k'>∈r,则称k是k'的父结点(或"父母"),而k'则是k的子结点(或"儿子"、"子女")

-兄弟节点、左兄弟、右兄弟

:若有序对<k,k'>及<k,k''>都∈r,则称K'和K''互为兄弟结点。

-分支结点、叶子结点

:没有子树的节点称为叶子结点(或树叶、终端结点)

:非终端结点称为分支结点

两个节点的有序对,称作边

路径、路径长度

除结点k0外的任何节点k ∈K,都存在一个结点序列k0,k1,...,ks,使得k0就是树根,且ks=k,其中有序对<k(i-1),ki>∈r(1<=i<=s)。这样的结点序列称为从根到结点k的一条路径,其路径长度为s(包含的边数)。

祖先、后代

若有一条由k到达ks的路径,则称k是ks的祖先,ks是k的子孙

层数

根为第0层,其他结点的层数等于其父结点的层数加1

深度

层数最大的叶子结点的层数

高度

层数最大的叶子结点的层数加1

满二叉树

如果一棵二叉树的任何结点,或者是树叶,或者恰有两颗非空子树,则此二叉树称为满二叉树

完全二叉树

最多只有最下面的两层结点度数可以小于2

最下一层的结点都集中最左边

 

扩充二叉树

所有空子树,都增加空树叶

外部路径长度E和内部内径长度I的关系满足:E=I+2n(n是内部结点个数)

二叉树的主要性质

  1. 在二叉树中,第i层上最多有2的i次方个结点(i>=0)
  2. 深度为k的二叉树至多有2的(k+1)次方减1个结点(k>=0),其中深度(depth)定义为二叉树中层数最大的叶子结点的层数。
  3. 一棵二叉树,如果终端结点数为n0,度为2的节点数为n2,则n0=n2+1
  4. 满二叉树定理:非空满二叉树树叶数目等于其分支结点数加1
  5. 满二叉树定理推论:一个非空二叉树的空子树数目等于其结点数加1
  6. 有n个结点(n>0)的完全二叉树的高度为log2(n+1),深度为[log2(n+1)]-1

 

 

 

ps:复习考研了,目标是北邮计算机的非全,可能得等学习到专业课的部分才会继续更新博客了,加油吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构与算法学习总结(七)——二叉树的概念 的相关文章

  • 算法题1

    假设有这样一个国家 xff0c 其法律规定当公民月收入为x时 xff0c 若x gt 1 则每月应当缴纳的税金为x的因数中除了x之外的最大值 同时该国法律允许公民将月收入分成若干部分 每部分均为整数 xff0c 要求每部分收入都大于1 xf
  • 3.4日期处理

    include lt iostream gt include lt cstdio gt 平年和闰年的每月的天数 int month 13 2 61 0 0 31 31 28 29 31 31 30 30 31 31 30 30 31 31
  • 关于STL和Boost的理解

    xff11 xff0e STL STL是standard Template Library即标准模板库的英文缩写 xff0c 是惠普实验室开发的一系列软件的统称 从根本上讲 STL是一些 容器 的集合 xff0c 这些容器有list vec
  • Ubuntu 各版本号和名称对照

    版本开发代号中译发布日期支持结束时间内核版本桌面版服务器版4 10Warty Warthog多疣的疣猪2004 10 202006 04 302 6 85 04Hoary Hedgehog白发的刺猬2005 04 082006 10 312
  • 【无标题】安装ROS E: 无法定位软件包 ros-melodic-desktop-full

    一 遇到问题 二 可能的原因和解决方法 1 源换一下 xff1a xff08 1 xff09 我是看这位大佬的 5条消息 记录 解决Ubuntu安装ros报错E Unable to locate package ros kinetic de
  • 无线通信原理及协议栈(ZigBee、蓝牙等)解析

    1 天线 说起无线电通信 xff0c 不可不提起天线 在无线电设备中 xff0c 用来辐射和接收无线电波的装置称为天线 在发射端 xff0c 发射机产生的已调制的高频振荡电流 xff08 能量 xff09 经馈电 xff08 指被控制装置向
  • 串口Serial连接方式

    串口Serial连接方式 1 协议终端选择Serial 2 会话选项 xff0c 选择 串行 3 进入电脑 设备管理器 xff0c 查看USB Serial Port以及端口设置 串行选项根据端口设置配置 确定并连接即可
  • tcp/ip 协议栈实现2-socket文件系统

    core initcall sock init net socket c static int init sock init void int err Initialize sock SLAB cache sk init Initializ
  • VMware虚拟机安装Windows11(无需设置TPM密码)

    VMware虚拟机安装Windows11 xff08 无需设置TPM密码 xff09 注意 xff1a 需要新版VMware xff0c 目前小白的版本为 16 2 3 一 新建虚拟机向导 1 新建虚拟机 点击菜单栏文件 新建虚拟机 2 配
  • ROS相关:使用rospy 编写ros程序并使用rosbag存储数据

    为什么使用rospy ROS支持C 43 43 和Python xff0c 由于ROS的底层是由C 43 43 编写 xff0c 因此大多数的ROS程序都使用C 43 43 xff0c 但是Python语言接口简单 xff0c 更容易编写
  • C函数调用过程

    这几天在看GCC Inline Assembly xff0c 在C代码中通过asm或 asm 嵌入一些汇编代码 xff0c 如进行系统调用 xff0c 使用寄存器以提高性能能 xff0c 需要对函数调用过程中的堆栈帧 xff08 Stack
  • 【GitHub】Branches和Tags分别是做什么用的?

    在 GitHub 中 xff0c Branches xff08 分支 xff09 和 Tags xff08 标签 xff09 都是用于版本控制的重要工具 Branches xff08 分支 xff09 可以用来创建一个新的开发分支 xff0
  • git clone 指定分支

    我们在有一个工程的权限后 xff0c 按照常规操作去拉代码 xff0c 往往会拉到默认的master分支 若我们担心master分支拉下来后 xff0c 与其他代码有冲突 xff0c 想直接拉某分支的代码 xff0c 则该怎么操作呢 1 我
  • rocketmq的消息msgId和offsetMsgId

    1 rocketmq的消息发送时 xff0c producer客户端 生成msgId xff08 通过 ip 43 进程 43 自增值 43 当前与系统启动时间差值 xff09 xff0c 有另外的一个叫法uniqId 方法入口 xff1a
  • 算法 - 桶排序(Bucket Sort)

    执行流程 xff1a 创建一定数量的桶 xff08 比如用数组 链表作为桶 xff09 按照一定的规制 xff08 不同类型的数据 xff0c 规则不同 xff09 xff0c 将序列中的元素均匀分配到对应的桶分别对每个桶进行单独排序将所有
  • 测试Pangolin是否安装成功

    一 终端输入 cd Pangolin examples HelloPangolin cmake make HelloPangolin 二 显示这个结果则成功 三 顺便放一个 我可终于装完了ORB SLAM3 被内存不够折腾了好久 换个内存条
  • 交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装

    AArch64 是随 ARMv8 ISA 一起引入的 64 位架构 xff0c 用于执行 A64 指令的计算机 而且在 AArch64 状态下执行的代码只能使用 A64 指令集 xff0c 而不能执行 A32 或 T32 指令 但是 xff
  • 02 机器学习中的评估指标

    机器学习中的评估指标 1 机器学习的目标 根本目标 xff1a 在给定的训练数据上 xff0c 试图训练出能够归纳数据的规律的模型 xff0c 并且能在未知样本上也有好的效果 泛化能力强的模型最好 能很好地适用于未知样本 xff0c 如错误
  • 方便Git提交代码的几个工具

    团队使用git管理代码 xff0c 为了提交方便 xff0c 查看Log方便 xff0c 师傅告诉我先安装几个工具 xff0c 如下 xff1a cola gitk AnyEdit 一 gitk安装 xff08 备注 xff1a 开始我没走

随机推荐