首页 > 其他分享 >二叉树 部分定义与性质

二叉树 部分定义与性质

时间:2024-07-17 14:54:18浏览次数:18  
标签:定义 路径 高度 叶子 二叉树 深度 节点 性质

针对于知识回顾/复习,发现一些博客对于一些名词的定义各不相同,于是自己对于部分容易混淆的定义作一个简单的记录。

详细关于二叉树的内容可以看:二叉树-Hello算法,部分博客内容来自其中。

名词定义

1. 层

层(Level):二叉树中的所有节点可以根据与根节点的距离分成不同的层次。根节点位于第 0 层,它的子节点位于第 1 层,依此类推。第 $ k $ 层的节点是与根节点的距离为 $ k $ 的节点集合。

2. 高度

树的高度(Height of the Tree):从根节点到最远的叶子节点的最长路径上的边数。根节点的高度等于树的深度。

节点的高度(Height of a Node):从某一节点到最远的叶子节点的路径上的边数。树的高度通常是根节点的高度。

3. 深度

树的深度(Depth of the Tree):从根节点到最远的叶子节点的最长路径所经过的边数。一般来说,根节点的深度为 0。

节点的深度(Depth of a Node):从根节点到该节点所经过的边的数量。

4. 度

节点的度(Degree of a Node):一个节点拥有的子节点数量。二叉树中的节点度最大为 2。

hello-算法 二叉树 tip

性质

1. 节点总数

深度为 $ k $ 的二叉树最多有 $ 2^{k+1} - 1 $ 个节点。

2. 叶子节点数

一个有 $ n $ 个节点的二叉树的叶子节点数为 $ n - 内部节点数 $。

3. 层次关系

在二叉树中,第 $ i $ 层最多有 $ 2^i $ 个节点( $ i $ 从 0 开始)。

4. 路径长度

二叉树的路径长度是树中所有节点到根节点的路径长度之和。

5. 满二叉树(完美二叉树)

如果一棵二叉树中所有的层次上的节点数都达到最大值,即第 $ i $ 层有 $ 2^i $ 个节点,则称为满二叉树或完美二叉树。

6. 完全二叉树

如果一棵二叉树中,除最后一层外的所有层上的节点数都达到最大值,并且最后一层的节点从左到右依次排列,这样的二叉树称为完全二叉树。

7. 完满二叉树

完满二叉树是一种二叉树,其中每个节点都有零个或两个子节点,没有只有一个子节点的节点。

8. 平衡二叉树

平衡二叉树中,任意节点的左子树和右子树的高度之差的绝对值不超过 1 。

标签:定义,路径,高度,叶子,二叉树,深度,节点,性质
From: https://www.cnblogs.com/walkallday/p/18307264

相关文章

  • 一文读懂 RAG:它将如何重新定义 AI 的未来?
    RAG可以使LLM能够在实时请求提供事实信息时,访问外部来源的数据,比如经过审核的数据库或互联网上的信息。这样一来,RAG就消除了大家对于LLM仅依赖其训练数据中获得的内部知识库的顾虑,毕竟,这些知识库可能存在缺陷或不完整。如果你尝试使用过一些LLM,那么,极有可能遇到的......
  • 关于在vue2中使用LogicFlow自定义节点
    主要参考LogicFlow官方文档在基础流程图搭建起来后,我们想要构建自己的需求风格,例如:那么该如何对节点进行自定义设定呢?文档当中有着详细的解释,本文以实际需求为例大体介绍:import{RectNode,RectNodeModel,h}from"@logicflow/core";classCustomNodeViewextendsR......
  • Hive自定义函数编写方法(含源代码解读,超详细,易理解)
    一、Hive自定义函数介绍        1.内置函数        Hive自带了一些函数。比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2.自定义函数        当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UD......
  • 【python学习】第三方库之pandas库的定义、特点、功能、使用场景和代码示例
    引言pandas是一个强大的Python库,用于数据分析和数据处理。它基于NumPy,提供了灵活的数据结构(Series和DataFrame)和数据操作功能,是数据科学和机器学习中不可或缺的工具文章目录引言一、安装`pandas`第三方库二、`pandas`的定义三、特点3.1强大的数据结构3.2灵活的数据......
  • LeetCode第257题:二叉树的所有路径的Java实现
    摘要LeetCode第257题要求生成二叉树的所有从根节点到叶子节点的路径。本文将介绍两种Java解决方案:迭代法和递归法。1.问题描述给定一个二叉树的根节点,按照从根到叶的顺序遍历所有路径,并将它们作为列表的列表返回。2.示例分析输入:[1,2,3,null,null,4]'输出:[[1,2],[1,......
  • Springboot定义阿里云oss工具类
    Springboot定义阿里云oss工具类文章目录Springboot定义阿里云oss工具类1、定义OSS相关配置2、读取OSS配置3、生成OSS工具类对象4、定义使用工具类1、定义OSS相关配置首先,在application.yml文件中定义阿里云OSS的相关配置信息。这些配置包括endpoint、acces......
  • 代码随想录刷题Day 14 二叉树part02
    226.翻转二叉树//这道题其实就是遍历二叉树,然后交换每个节点的左右子节点即可。这里我就使用了一个栈来存储需要遍历的节点,每次循环弹出一个,然后交换其左右子节点就好了classSolution{publicTreeNodeinvertTree(TreeNoderoot){Stack<TreeNode>stack=new......
  • 【Java--数据结构】二叉树
    欢迎关注个人主页:逸狼创造不易,可以点点赞吗~如有错误,欢迎指出~树结构树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合注意:树形结构中,子树之间不能有交集,否则就不是树形结构常见概念  节点的度:一个节点含有子树的个数,如A的度为6......
  • 三分钟了解自定义表单自定义工作流的多个优势
    降本、提高效率、解决信息孤岛是很多企业亟需要解决的问题。什么样的软件平台可以实现这一目标?可以随时来了解低代码技术平台。它当中的自定义表单自定义工作流拥有多个优势特点,可以为企业降低技术门槛、提高工作效率,可视化操作界面的便利性更让职场朋友们深知是实现流程化办公的......
  • 利用递归的二叉树的先序,中序,后序遍历
    一.常见的二叉树的遍历①先序遍历:先访问根节点,再访问左右子树(根左右)③中序遍历:先访问左子树,再访问根节点,最后访问右子树(左根右)③后序遍历:先访问左右子树,再访问根节点(左右根)先定义二叉树的数据结构:typedefcharElemType;typedefstructBTNode{ ElemTypedata; ......