朝花夕拾 · 数据结构 | 二叉树篇

发布时间:2026/10/9 16:03:27

朝花夕拾 · 数据结构 | 二叉树篇 一.树的基本特性二.二叉树1.定义2.几种特殊的二叉树3.二叉树的基本性质1非空二叉树上的叶结点数等于度为2的结点数加1即n0n2十1。证明:设度为0,1和2的结点个数分别为n0,n1和n2结点总数nn0n1n2。再看二叉树中的分支数除根结点外其余结点都有一个分支进入设B为分支总数则nB1。这些分支是由度为1或2的结点射出的因此又有Bn12n2。于是得n0n1n2n12n21则n0n21。2)非空二叉树的第k层最多有2^(k-1)个结点(k≥1)。第1层最多有2^(1-1)1个结点(根)第2层最多有2^(2-1)2个结点以此类推可以证明其为一个公比为2的等比数列2^(k-1)。3)高度为h的二叉树至多有2^h-1个结点(h≥1)。该性质利用性质2求前h项的和即等比数列求和的结果性质2和性质3还可以拓展到m叉树的情况即m叉树的第k层最多有m^(k-1)个结点高度为h的m叉树至多有(m^h-1)/(m-1)个结点。性质4相对不常用感兴趣了解即可。4)对完全二叉树按从上到下、从左到右的顺序依次编号1,2,...,n则有以下关系:最后一个分支结点的编号为⌊n/2⌋(向下取整,若i≤⌊n/2⌋,则结点i为分支结点否则为叶结点。叶结点只可能在最后两层上出现(相当于在相同高度的满二叉树的最底层、最右边减少一些连续叶结点当减少2个或以上叶结点时次底层将出现叶结点)。若有度为1的结点则最多只可能有一个且该结点只有左孩子而无右孩子(度为1的分支结点只可能是最后一个分支结点其结点编号为⌊n/2⌋)。按层序编号后一旦出现某结点(如编号i)为叶结点或只有左孩子的情况则编号大于i的结点均为叶结点(与结论1和结论3是相通的)。若n为奇数则每个分支结点都有左、右孩子;若n为偶数则编号最大的分支结点(编号为n/2)只有左孩子没有右孩子其余分支结点都有左、右孩子。当i1时结点i的双亲结点的编号为⌊i/2⌋。若结点i有左、右孩子则左孩子编号为2i右孩子编号为2i1。结点i所在层次(深度)为⌊log2 i⌋1。5)具有n个(n0)结点的完全二叉树的高度为⌈log2(n1)⌉或⌊log2n⌋1。设高度为h根据性质3和完全二叉树的定义有2^(h-1)n≤2^h-1 或者 2^(h-1)≤n2^h得2^(h-1) n1 ≤ 2^h即h-1 log2(n1) ≤ h因为h为正整数所以h⌈log2(n1)⌉,或者得h-1≤ log2n h所以h⌊log2n⌋1。4.二叉树的遍历1.先序遍历2.中序遍历3.后序遍历上述三种遍历算法中递归遍历左、右子树的顺序都是固定的只是访问根结点的顺序不同。不管采用哪种遍历算法每个结点都访问一次且仅访问一次所以时间复杂度都是O(n)。在递归遍历中递归工作栈的栈深恰好为树的深度所以在最坏情况下二叉树是有n个结点且深度为n的单支树遍历算法的空间复杂度为O(n)。4.层序遍历
延伸阅读

更多相关文章

2026/10/8 0:59:43

告别频繁切换窗口:用 Topit 三步把任意窗口钉在屏幕最上层

告别频繁切换窗口:用 Topit 三步把任意窗口钉在屏幕最上层 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 写方案写到一半,切到浏览器查…

2026/10/9 16:02:45

SHX字库编辑与反编译:从二进制解析到可视化编辑的完整指南

简介:ShxEditPro 是面向 AutoCAD 用户、文字设计工程师及广告制作、模具制造从业者的专业矢量字库编辑工具,用于解决 shx/shp 字库的创建、修改与格式转换需求。资源包内含 1 个 docx 使用说明书,压缩包约 796KB,以图文文档形式系…

2026/10/9 16:02:45

MIC特征筛选+LSTM:多输入单输出时间序列预测实战

去年接了一个现场的预测需求:一台空压机组,传感器有转速、入口温度、冷却水温度、振动、电流等十多个变量,要预测下一时刻的出口压力。我第一反应是直接上LSTM,结果模型又慢又抖,训练半天效果还很虚。后来把MIC特征筛选…

2026/10/9 16:02:45

Python全栈租房推荐与房价预测系统设计实战

每年到了毕设季,后台收到最多的私信就是“推荐一个适合计算机本科生的题目”,既要能体现技术含量,又怕太难做不完。如果你也处于这个阶段,或者想做一个能真正跑起来、逻辑闭环的数据类项目作为面试作品,那 Python 全栈…

2026/10/9 16:02:45

2026美赛必备:非线性规划NLP建模与求解实战指南

你准备2026年美赛的时候,如果不把非线性规划(NLP)这个模型吃透,决赛圈里大概率会吃到苦头。别误会,我不是说线性规划不重要——恰恰相反,线性规划是很多人的基本功,但美赛题目的真实数据几乎不会…

2026/10/9 16:02:45

时钟频率剖析:从晶振到CPU主频的完整认知框架

凌晨三点,我盯着示波器上那道波形发呆。串口数据偶尔错一个字节,查了两天协议、电平、接线,最后才发现问题出在主控芯片的时钟频率配置上——时钟源选错,分频系数算错,波特率再怎么配都是歪的。从那次之后,…

2026/10/9 15:57:45

基于SVM的垃圾短信识别:从TF-IDF特征工程到课程设计实战

简介:Python基于机器学习SVM的垃圾短信识别系统源码包,面向计算机、大数据、人工智能等专业的高校学生及从业者,适合作为课程设计、毕业设计或机器学习入门实战项目。资源围绕垃圾短信二分类场景,完整覆盖文本预处理、TF-IDF特征提…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑