二叉树的概念和术语_第1页
二叉树的概念和术语_第2页
二叉树的概念和术语_第3页
二叉树的概念和术语_第4页
二叉树的概念和术语_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DATASTRUCTURE二叉树的概念和术语数据结构核心知识体系·从定义到遍历的完整解析Contents课程目录二叉树的概念和术语——系统梳理二叉树的基本定义、核心术语、特殊类型、数学性质与遍历方法。01二叉树的基础定义02核心术语体系03特殊二叉树类型04二叉树的数学性质05二叉树的遍历方法Chapter01二叉树的基础定义从递归定义到五种基本形态,建立对二叉树的第一性认知DEFINITION二叉树的形式化定义二叉树是一种递归定义的有序树形结构,每个节点至多拥有两棵子树且左右次序不可颠倒,这一递归特性使其成为算法设计中最基础也最重要的数据结构之一。01集合定义:二叉树是n个有限元素的集合,n=0时为空二叉树;n>0时由一个根节点与两棵互不相交的左子树、右子树组成。02递归本质:左子树和右子树本身也是二叉树,这种自相似结构天然适配递归算法,如遍历、搜索、插入和删除操作。03有序性约束:子树有明确的左右之分,即使某节点只有一棵子树也必须指明是左还是右,次序不可任意颠倒。04图论视角:二叉树是连通的无环图,每个顶点度不大于3,根节点度不大于2,每个非根节点有唯一父节点。二叉树结构示意图·黑板粉笔手绘BINARYTREE二叉树的五种基本形态二叉树的递归定义决定了其五种基本形态:空树、单根节点、仅有左子树、仅有右子树和完全二叉树。理解这五种形态是掌握二叉树递归操作的前提。DEGENERATEFORMS退化形态空二叉树:不含任何节点,是递归终止的边界条件单根节点:仅含根节点且无子树,是递归分解的最终单元单侧子树:只有左或右子树,因有序性被视为两种形态二叉树区别于普通树的关键特征COMPLETEFORMS完整形态左右子树均存在:根节点同时拥有左右子树,是最常见的二叉树形态完全二叉树:各层节点从左到右依次填满,形态最规则满二叉树:所有叶子节点位于同一层,节点数达到最大值大多数实际应用场景属于此类KEYAPPLICATION递归与结构递归终止:空树与单节点作为递归算法的边界条件分解方向:单侧与完整形态决定递归分解的深度与路径结构应用:形态特性直接影响遍历算法的设计与效率堆结构·优先队列BinaryTreevsGeneralTree二叉树与普通树的本质辨析尽管二叉树与普通树在形态上相似,但二者存在两个根本差异:度数上限约束和子树有序性。二叉树不是树的特殊情形,而是独立的数据结构概念。差异一:度数限制DegreeConstraint01普通树中结点的最大度数没有限制,一个节点可以有任意数量的子节点,如文件系统中一个目录可包含无数子文件度数→∞02二叉树中每个节点的度数严格不超过2,这一约束使存储结构可以固定为"左指针+右指针"的简洁形式度数≤2差异二:有序性OrderingProperty01普通树的子节点之间无先后次序之分,交换两个子节点的位置不改变树的结构含义无序02二叉树严格区分左子树与右子树,仅含左子树和仅含右子树是两种不同的二叉树,这一特性支撑了二叉搜索树的有序查找左≠右APPLICATIONSCENARIOS二叉树的典型应用场景二叉树因其递归结构和有序特性,在搜索排序、表达式解析和优先队列三大领域发挥着基础作用,是数据库索引、编译器和任务调度等核心系统的底层数据结构。搜索与索引二叉搜索树与自平衡变体(AVL树、红黑树)是数据库B-tree索引和C++std::map等标准库的底层实现,支持高效查找O(logn)表达式解析编译器使用二叉树表示算术表达式的语法结构,中序遍历还原中缀表达式,后序遍历生成后缀表达式中缀·后缀·前缀优先队列二叉堆本质是完全二叉树,用于任务调度、Dijkstra最短路径算法和Huffman编码压缩等场景BinaryHeap决策分类决策树是基于二叉树分裂的机器学习分类算法,内部节点代表特征判断,叶子节点代表分类结果MLCHAPTER02核心术语体系系统梳理节点关系、层次度量与结构描述中的关键概念Fundamentals节点与度的基本概念节点是二叉树的基本单元,度描述节点和树的分支复杂度。理解叶子节点与分支节点的区分,是后续推导二叉树数学性质的基础。节点Node包含一个数据元素及若干指向子树的分支信息,是二叉树的最小操作单元,每个节点可存储键值、卫星数据等。最小操作单元节点的度Degree一个节点拥有子树的数目,二叉树中节点度数取值仅为0、1或2,不存在度大于2的情况。0·1·2叶子节点Leaf度为0的终端节点,没有子树,在遍历中通常作为递归终止条件,在Huffman编码中代表编码符号。Degree=0分支节点度不为0的非终端节点,包括度为1和度为2两种情况,是连接根与叶子的中间枢纽。Degree≥1BINARYTREE·TERMINOLOGY节点间的关系术语节点间的关系术语分为纵向的层级关系(双亲-孩子-祖先-子孙)和横向的平级关系(兄弟-堂兄),它们共同描述了二叉树的拓扑结构。双亲与孩子若B是A的子树的根,则A是B的双亲(父节点),B是A的孩子(子节点)。每个非根节点有且仅有一个双亲,这一特性保证了树结构的单向连接性。兄弟节点具有同一双亲的孩子节点互为兄弟,共享相同的父节点连接。在二叉树中最多只有两个兄弟(左兄弟和右兄弟),分别对应左子树和右子树。祖先与子孙从根到某节点路径上的所有节点都是该节点的祖先,形成纵向的层级链条。以某节点为根的子树中所有节点都是该节点的子孙,体现树的递归结构特性。堂兄节点处于同一层但双亲不同的节点互为堂兄,属于横向的扩展关系。在层次遍历中属于同一批次被访问的节点,常用于广度优先搜索算法。BINARYTREE·METRICS层次与路径的度量术语层、深度和路径是衡量二叉树结构复杂度的核心指标,深度直接决定了搜索、插入等操作的时间复杂度上界,是算法分析的关键参数。节点层次(Level)根节点定义为第1层,根的孩子为第2层,依次类推,层次反映了节点在树中的纵向位置树的深度(Depth/Height)树中节点的最大层次数,深度为k的二叉树最多有2k−1个节点,深度直接影响搜索算法的最坏时间复杂度路径(Path)从一个节点到另一个节点经过的边序列,路径长度等于经过的边数,根到叶子的最长路径等于树的深度减1节点高度从该节点到其最远叶子节点的路径长度,叶子节点高度为0,根节点的高度等于树的深度减1BinaryTreeTerminology核心术语速查对照表将二叉树的核心术语系统化整理为对照表,涵盖节点属性、关系描述和度量指标三大维度,为后续算法学习和面试准备提供快速参考。二叉树核心术语速查表术语定义示例说明节点(Node)包含数据元素及指向子树分支的基本单元根节点、内部节点、叶子节点节点的度该节点拥有子树的数量(0/1/2)叶子节点度=0,满节点度=2树的度树中所有节点度的最大值二叉树的度≤2叶子节点度为0的终端节点Huffman编码中的符号节点双亲/孩子直接上下级关系的节点对A是B的父节点,B是A的子节点深度/高度树的最大层数/根到最远叶的路径长3层满二叉树深度=3路径两节点间经过的边序列根到叶路径长=深度-1兄弟/堂兄同父节点/同层不同父左右孩子互为兄弟涵盖节点属性、关系描述和度量指标三大维度的术语对照表CHAPTER03特殊二叉树类型满二叉树、完全二叉树与平衡二叉树的定义辨析与应用场景Definition·Properties满二叉树(FullBinaryTree)满二叉树是每一层都被完全填满的二叉树,深度为k时恰好拥有2^k-1个节点,它是节点数量最多的二叉树形态,也是衡量其他二叉树平衡程度的参照标准。严格定义深度为k且有2k−1个节点的二叉树称为满二叉树,每一层i(1≤i≤k)恰好有2i−1个节点。2i-1

节点/层结构特征所有非叶子节点的度均为2(同时拥有左子树和右子树),所有叶子节点都位于最底层即第k层。度=2非叶节点节点总数公式深度k的满二叉树总节点数=1+2+4+…+2k−1=2k−1,叶子节点数=2k−1。2k−1总节点参照价值满二叉树是同深度下节点最多的二叉树,完全二叉树的定义正是通过与满二叉树的节点编号对应来描述的。节点最多同深度CHAPTER03·TREESTRUCTURES完全二叉树(CompleteBinaryTree)完全二叉树要求除最后一层外各层节点完全填满,且末层节点从左到右连续排列。这一结构特性使其可以用数组高效存储,是堆和优先队列的实现基础。01形式化定义深度为k、有n个节点的二叉树,当且仅当每个节点与深度为k的满二叉树中编号1至n的节点一一对应时,称为完全二叉树。这种一一对应关系保证了节点编号的连续性。02直观判定准则除最后一层外其他各层节点数达到最大值,最后一层的叶子节点从左到右依次排布,中间不允许出现空缺。可通过按层遍历快速验证。03数组存储优势节点i的左孩子在位置2i、右孩子在2i+1、父节点在⌊i/2⌋,无需指针即可通过下标计算定位,空间利用率极高,缓存友好。04与满二叉树关系满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树——完全二叉树可以看作是"缺了右下角"的满二叉树,包含关系明确。DataStructure·Tree平衡二叉树(AVLTree)平衡二叉树通过约束任意节点的左右子树高度差不超过1来防止搜索树退化,保证查找、插入和删除操作的时间复杂度始终维持在O(logn)的高效水平。数据结构课程·课堂教学场景01定义:平衡二叉树是空树或满足以下条件的二叉排序树——左右子树高度差的绝对值不超过1,且左右子树本身也是平衡二叉树。02平衡因子:每个节点的平衡因子=左子树高度−右子树高度,合法取值仅为−1、0、1,超出此范围则触发旋转调整。03防退化意义:普通二叉搜索树在有序数据插入时会退化为链表,查找复杂度从O(logn)恶化到O(n),AVL树通过自平衡机制彻底避免此问题。04旋转操作:当插入或删除导致失衡时,通过LL、RR、LR、RL四种旋转操作恢复平衡,每次旋转的时间复杂度为O(1)。BINARYTREE三种特殊二叉树的对比辨析满二叉树、完全二叉树和平衡二叉树从不同维度约束二叉树的结构形态,理解它们的定义边界和包含关系是正确选择数据结构的前提。满二叉树每层节点完全填满,深度k时恰好2k−1个节点是节点数最多的二叉树,也是最严格的结构标准2k−1完全二叉树除末层外各层填满,末层节点从左到右连续无空缺满二叉树一定是完全二叉树,支持高效数组存储数组存储平衡二叉树任意节点左右子树高度差绝对值≤1,不要求填满满二叉树一定是平衡的,但平衡二叉树不一定完全Δh≤1Chapter04二叉树的数学性质节点分布规律、层数关系与Catalan数,构建二叉树的定量分析能力BINARYTREE·PROPERTYI性质一:每层节点数与总节点数二叉树的节点容量呈指数增长,第i层至多2^(i-1)个节点,深度k的二叉树至多2^k-1个节点。这一指数特性是二分查找和树形算法对数时间复杂度的数学根源。第i层最多节点数二叉树的第i层(i≥1)上至多有2^(i-1)个节点,每层容量是前一层的2倍,呈几何级数增长。2^(i-1)深度k的最大总节点数深度为k的二叉树至多有2^k−1个节点(即2⁰+2¹+…+2^(k-1)),满二叉树恰好达到此上界。2^k−1n个节点的最小深度具有n个节点的二叉树最小深度为⌈log₂(n+1)⌉,这一对数关系解释了树形搜索时间复杂度为O(logn)。O(logn)实际工程应用数据库B+树的扇出、分布式哈希环的分片策略都利用了指数增长特性来控制树的深度和查询代价。B+树BINARYTREE·PROPERTYII性质二:叶子节点与二度节点的关系任何二叉树的叶子节点数n₀恰好等于度为2的节点数n₂加1(n₀=n₂+1),这一优美公式与度为1的节点数无关,是树的拓扑不变量。01核心公式对任何二叉树T,若终端节点(叶子)数为n₀,度为2的节点数为n₂,则n₀=n₂+1,该关系与度为1的节点数无关。n₀=n₂+102推导过程总节点n=n₀+n₁+n₂,总边数=n−1=n₁+2n₂,联立消去n₁即得n₀=n₂+1,推导简洁且具有一般性。消去n₁03满二叉树验证深度k的满二叉树中n₂=2^(k−1)−1,n₀=2^(k−1),代入公式n₀=(2^(k−1)−1)+1=2^(k−1),完全吻合。2^(k−1)04应用举例已知一棵二叉树有10个度为2的节点和5个度为1的节点,则叶子节点数=10+1=11,总节点数=11+5+10=26。N=26PROPERTIES性质三:Catalan数与存储结构n个节点可构成的不同二叉树形态数等于第n个Catalan数,体现了二叉树组合空间的庞大。存储结构的选择需根据树的形态特征权衡空间效率与操作灵活性。Catalan数公式n个节点的不同二叉树形态数等于第n个Catalan数C(n)=C(2n,n)/(n+1)形态空间增长形态空间随节点数快速增长n=3→5,n=4→14顺序存储节点i的左孩子在2i、右孩子在2i+1,适合完全二叉树和堆,空间利用率高但对稀疏树浪费严重Array·空间高效链式存储每个节点包含data、left、right三个字段,灵活适应任意形态,是一般二叉树最常用的实现方式Pointer·灵活通用BINARYTREE·MATHEMATICALPROPERTIES二叉树数学性质汇总表二叉树的数学性质涵盖节点分布、层数约束和计数规律三大类,这些公式构成了树形数据结构定量分析的完整工具集。二叉树核心数学性质性质名称数学表达式说明与适用条件第i层最大节点数2^(i-1)i≥1,满二叉树恰好达到此上界深度k的最大总节点数2^k−1满二叉树的节点总数公式n个节点的最小深度⌈log₂(n+1)⌉完全二叉树/满二叉树达到此最小深度叶子与二度节点关系n₀=n₂+1对任意二叉树成立,与n₁无关n节点的二叉树形态数C(n)=C(2n,n)/(n+1)Catalan数,如C(3)=5,C(4)=14完全二叉树深度⌊log₂n⌋+1n个节点的完全二叉树的精确深度汇总:涵盖节点分布、层数约束和计数规律的完整数学性质体系CHAPTER05二叉树的遍历方法深度优先的三种变体与广度优先的层序遍历,掌握递归与迭代两种实现思路TRAVERSALFRAMEWORK遍历方法的总体分类框架二叉树遍历分为深度优先(DFS)和广度优先(BFS)两大策略:DFS沿分支纵向深入,根据根的访问时机分为先序/中序/后序三种变体;BFS按层次横向扫描,即层序遍历。深度优先遍历(DFS)沿一条路径尽可能深入,到达叶子后回溯到最近的分叉点继续探索未访问的分支三种变体根据根节点访问顺序区分:先序(根→左→右)、中序(左→根→右)、后序(左→右→根)递归调用天然适配DFS,迭代实现需借助显式栈(Stack)模拟递归调用过程广度优先遍历(BFS)核心思想从根节点开始逐层向下访问,同一层内从左到右依次处理,又称层序遍历。这种策略确保先访问完当前层的所有节点,再进入下一层,天然适合寻找最短路径或按层级分析树的结构特征。实现机制使用队列(Queue)数据结构:先将根节点入队,循环执行出队操作,并将出队节点的左右孩子依次入队,直到队列为空即完成遍历。BinaryTreeTraversal先序遍历(Pre-order/DLR)先序遍历按照"根→左→右"的顺序访问每个节点,根节点总是最先被访问。先序序列配合中序序列可以唯一确定一棵二叉树的结构,是树的序列化和重建的基础。访问顺序先访问根节点(D),再递归先序遍历左子树(L),最后递归先序遍历右子树(R),缩写为DLR。该顺序保证了根节点在任何子树节点之前被处理。DLR序列特征根节点在先序序列中总是位于其子树所有节点之前,这一特性可用于从前序序列中快速定位子树范围,是递归算法设计的关键依据。子树定位表达式应用对表达式树进行先序遍历可得到前缀表达式(波兰式),运算符位于操作数之前。例如表达式(a+b)*c的先序遍历结果为*+abc,无需括号即可明确运算优先级。波兰式树的唯一重建已知先序序列和中序序列可唯一确定一棵二叉树——先序序列的第一个元素确定根节点,中序序列划分左右子树范围,递归应用此规则完成整棵树的重建。唯一重建BINARYTREETRAVERSAL中序遍历(In-order/LDR)中序遍历按照"左→根→右"的顺序访问节点,对二叉搜索树进行中序遍历可得到严格递增的有序序列,这一性质使其成为排序和树结构验证的核心工具。访问顺序先递归中序遍历左子树(L),再访问根节点(D),最后递归中序遍历右子树(R),缩写为LDR。LDR搜索树核心性质对二叉搜索树(BST)进行中序遍历,输出序列严格递增,可利用此性质验证BST合法性或实现有序输出。严格递增表达式应用对表达式树进行中序遍历得到中缀表达式,如(a+b)*c的遍历结果为a+b*c,需添加括号保证运算优先级。中缀表达式Morris遍历优化通过利用叶子节点的空指针建立线索,可将中序遍历的空间复杂度从O(h)降至O(1),无需递归或栈。O(1)空间TRAVERSAL·POST-ORDER后序遍历(Post-order/LRD)后序遍历按照"左→右→根"的顺序访问节点,根节点最后被处理。这一"自底向上"的特性使其天然适用于需要子问题结果先于父问题使用的场景,如表达式求值和树结构清理。访问顺序先递归后序遍历左子树(L),再递归后序遍历右子树(R),最后访问根节点(D),缩写为LRD。LRD左→右→根自底向上特性访问根节点时其左右子树已全部处理完毕,适用于需要先聚合子节点信息再计算父节点的场景。子树聚合先子后父表达式应用对表达式树进行后序遍历得到后缀表达式(逆波兰式),如(a+b)×c的结果为ab+c*,可直接用栈求值。逆波兰式栈求值内存释放释放二叉树内存时应先后序遍历释放左右子树再释放根节点,避免先释放父节点导致指针丢失。悬垂引用安全释放TreeTraversal层序遍历(Level-order/BFS)层序遍历从上到下、从左到右逐层访问节点,是广度优先搜索在二叉树上的直接应用。借助队列实现,适用于求树的宽度、最小深度和按层分组等横向分析问题。01访问顺序从根节点开始,逐层从上到下,每层内从左到右依次访问所有节点。这种遍历方式属于广度优先搜索(BFS)的典型应用,确保先访问的节点其相邻节点也优先被处理。02队列实现将根节点入队,循环执行"出队→访问→左孩子入队→右孩子入队",直到队列为空。时间复杂度O(n),空间复杂度O(w),其中w为树的最大宽度。03求树的宽度层序遍历中记录每层节点数,最大层的节点数即为树的宽度。该指标反映二叉树在横向的最大扩展程度,是衡量树形结构平衡性的重要参数。04求最小深度层序遍历中遇到的第一个叶子节点所在的层即为最小深度。BFS天然保证首次到达叶子的路径最短,无需遍历完整棵树即可得到结果。BINARYTREETRAVERSAL四种遍历方法的结果对比以同一棵二叉树为例,四种遍历方法产生不同的访问序列:先序以根开头、后序以根结尾、中序以根分割左右子序列、层序按层次平铺,各有其独特规律。同一棵二叉树的四种遍历结果对比遍历方式访问顺序规则遍历序列示例先序遍历根→左

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论