首页 > 编程语言 >算法

算法

时间:2023-11-09 22:57:36浏览次数:32  
标签:结点 遍历 链表 算法 二叉树 节点 指针

二叉树


二叉树结点的定义


struct TreeNode {
	int val;
	TreeNode* left;
	TreeNode* right;
	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};  //分号记得

有关二叉树的一些概念


  1. 根节点:位于二叉树顶层的节点,没有父节点。
  2. 叶节点:没有子节点,两个左右子节点的指针为空。
  3. 节点的层:从顶到底递增,根节点所在层为1;
  4. 节点的度:节点的子节点的数量。二叉树中,度的范围是0,1,2。
  5. 边:连接两个节点的线段。即节点指针。
  6. 二叉树的高度:从根节点到最远叶节点所经过的边的数量。
  7. 节点的深度:从根节点到该节点所经过的边的数量。
  8. 节点的高度:从最远叶节点到该节点所经过的边的数量。

二叉树的类型


  1. 完美二叉树(满二叉树):每一层都填满了节点,并且最底层节点的度为0,其余所有层的度为2,这个填满指的是节点都有左右子节点。如果树的高度为h(节点计数),则节点总数为2^(h)-1。典型的细胞分裂现象。
  2. 完全二叉树:除了最底层节点没有被填满外,其他所有层节点被填满。且最底层节点靠左填充。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。
  3. 完满二叉树:除了叶子结点外,其余所有节点都有两个子节点。
  4. 平衡二叉树:任意节点的左子树和右子树的高度差的绝对值不超过1。
  5. 二叉搜索树:它是一个有序树,若左子树不为空,则左子树上所有节点的值小于根节点的值。若右子树不为空,则右子树上所有节点的值大于根节点的值。并且它的左右子树也分别为二叉搜索树。
  6. 平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,平衡二叉树和二叉搜索树的结合体。
  7. 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。

相关文章

  • 算法day1数组|力扣704二分查找,27移除元素
    数组基础理论数组是存放在连续内存空间上的相同类型数据的集合。可以通过下标轻松获取数据,但是增删元素的时候需要移动其他元素Vector和array的区别vector的底层实现是array,但是vector是容器不是数组数组的元素不能删除,只能覆盖小技巧:取中间intmid=l+r>>1;//有时候怕溢......
  • Python算法
    递归-汉诺塔查看代码 A=[1,2,3,4]B=[]C=[]defhanoi(n,A,B,C):ifn==1:#终止条件C.append(A.pop())returnelse:hanoi(n-1,A,C,B)#将A经过C移动到Bprint(n,A,B,C)C.append(A.pop())#此......
  • Primal-Dual 原始对偶算法
    想把spfa换成dij,用Johnson里面的技巧,给予每个点一个势能\(h_u\),边\((u,v,w)\)的新边权为\(w+h_u-h_v\),为了保证其\(\geq0\)以源点为最短路跑最短路后赋值\(h_u\getsd_u\)即可。增广之后会加入反向边,考虑怎么更新势能。首先一条边的反向边被加入,其满足什么条件,然后......
  • 文心一言 VS 讯飞星火 VS chatgpt (131)-- 算法导论11.2 3题
    三、用go语言,Marley教授做了这样一个假设,即如果将链模式改动一下,使得每个链表都能保持已排好序的顺序,散列的性能就可以有较大的提高。Marley教授的改动对成功查找、不成功查找、插入和删除操作的运行时间有何影响?文心一言:Marley教授的假设是关于调整链表(可能是一个散列链表)以保......
  • 文心一言 VS 讯飞星火 VS chatgpt (131)-- 算法导论11.2 3题
    三、用go语言,Marley教授做了这样一个假设,即如果将链模式改动一下,使得每个链表都能保持已排好序的顺序,散列的性能就可以有较大的提高。Marley教授的改动对成功查找、不成功查找、插入和删除操作的运行时间有何影响?文心一言:Marley教授的假设是关于调整链表(可能是一个散列链表)......
  • TSINGSEE青犀智能分析网关工服识别算法,如何最大限度保障工人安全?
    众所周知,TSINGSEE青犀智能分析网关算法繁多,大多数算法已经和大家讲解过了,今天就和大家聊一聊工服识别算法。工服识别算法一般应用于工地、化工、煤矿等场所,用来监督检测施工人员是否按照要求着工服,最大程度保障人员安全,具体有以下作用:1、实时监控与告警检测员工是否按照要求着工作......
  • 雪花算法SnowFlake
    SnowFlake算法结构如下:大致分为了无效位、时间位、机器位和序列号位。1.第一位:占用1bit,其值始终是0,没有实际作用(因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用整数,所以最高位固定为0)。2.时间戳:占用41bit,精确到毫秒,总共可以容纳约69年的时间。3.工作机器id:占......
  • TSINGSEE青犀智能分析网关工服识别算法,如何最大限度保障工人安全?
    众所周知,TSINGSEE青犀智能分析网关算法繁多,大多数算法已经和大家讲解过了,今天就和大家聊一聊工服识别算法。工服识别算法一般应用于工地、化工、煤矿等场所,用来监督检测施工人员是否按照要求着工服,最大程度保障人员安全,具体有以下作用:1、实时监控与告警检测员工是否按照要求着......
  • TSINGSEE青犀车辆违停AI算法在园区道路管控场景中的应用方案
    一、背景与需求园区作为企业办公、生产制造的重要场所,主要道路车辆违停等违规行为会对园区的安全造成隐患,并且在上下班高峰期内,由于发现不及时,车辆违停行为会造成出入口拥堵现象,这也成为园区管理的棘手问题。二、方案设计TSINGSEE青犀针对园区的车辆违停监管难题,借助AI视频分析......
  • TSINGSEE视频智能分析人员入侵AI检测算法如何让城市管理更加高效、智慧?
    在城市管理场景中,经常面临着禁区垂钓、非法捕捞、行人闯红灯、小区盗窃、车辆乱停乱放等一系列管理难题,这给城市发展带来了不小的阻力,同时也极易增加管理的人力、物力和财力。传统的人员巡逻监管效率低并且存在时间差,很难及时发现这些违规行为,因此,利用AI智能检测技术,尤其是人员入......