2014-12-10

线性表 链表 栈 串 这些都是一对一关系的线性结构


下面讨论一对多的关系


一些概念:

只能有一个根节点,可以有很多子节点,但子节点之间不能相交


一个结点有几个子节点称为几度

度为0 的结点叫 叶结点 或 终端节点 


整个树的度是所有结点度的最大值


结点最大的层次称为树的深度


如果把树的结点从左至右看成是有序的,不能互换的,称为有序树



树的存储结构:

双亲表示法

每个结点分为两部分 一部分存储该节点的信息,另一部分存储到双亲的指针(双亲的数组下标)

这样的话 想知道双亲容易 想知道孩子 就得遍历整个树


孩子表示法

每个结点有多个指针域,每个指针分别指向一颗子树的根节点(多重链表表示法)


方案一:每个结点的指针域数量等于树的度

浪费空间

方案二:每个结点的指针域数量等于该结点的度,专门用一个位置(度域)存储该结点 的度

运算消耗时间


综合方案:

把每个结点的孩子存储在一个单链表里,再把每个节点的头指针顺序存储在一个线性表中

这样的话就有两种结点 

一种是单链表的结点 两部分组成 数据域存储该结点在线性表中的位置信息,指针域存储下一个孩子结点的指针

另一种是线性表的结点 数据域存储该结点的数据信息,指针域存储该节点孩子链表的头指针


问题:找双亲需要遍历整个树


改进:双亲孩子表示法

 在线性表中加入一个区域存储双亲的指针


孩子兄弟表示法:

(二叉树)

任意一棵树, 它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。

因此,我们设置两个指针, 分别指向该结点的第一个孩子和此结点的右兄弟。

结点三部分组成

数据域 第一个孩子指针 右兄弟指针





二叉树

对于这种在某个阶段都是两种结果的情形,比如开和关、0 和1 、真和假、上和下、对与错,正面与反面等, 都适合用树状结构来建
模,而这种树是一种很特殊的树状结构,叫做二叉树。


特点:

二叉树结点的度最大为2

左右不能颠倒 是有序的

某结点只有一颗子树也有区分左右


几种特殊的二叉树

斜树 只有左子树或右子树

满二叉树 所有结点都分别有左子树和右子树 并且 所有叶子都在同一层

完全二叉树 每个结点按照满二叉树的结构逐层顺序编号,如果编号出现空挡,就说明不是完全二叉树,否则就是。


二叉树的性质

二叉树第i层最多有2的i-1次幂个结点

深度为k的二叉树最多有2的k次幂-1个结点

任何一棵二叉树T,如果其终端结点数为m,度为2 的结点数为n,m=n+1

具有n 个结点的完全二叉树的深度为 log2 n + 1,i=1为根,2i>n没有左孩子否则左孩子是2i,2i+1>n没有右孩子否则右孩子是2i+1


二叉链表

每个结点三个部分组成 左孩子指针 数据域 右孩子指针


二叉树遍历

前序遍历 先访问根节点 ,然后前序遍历左子树 再前序遍历右子树  (根 左 右)

中序遍历 先中序遍历左子树 直到为空返回根节点 然后中序遍历右子树 注意 不是先访问根节点 (左 根 右)

后序遍历 从左到右先叶子后结点的方式遍历左右子树 然后访问根节点(左 右 根)

层序遍历 略


注意:已知前序和后序遍历,是不能确定一棵二叉树的


线索二叉树

线索化的实质就是将二叉链表中的空指针改为指向前驱或后继的线索。由于前驱
和后继的信息只有在遍历该二叉树时才能得到,所以线索化的过程就是在遍历的过程中修改窒指针的过程。

这时二叉树就转换成了一个双向链表

CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b或2023b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪(CEEMDAN)、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 1. EMD(经验模态分解,Empirical Mode Decomposition) 2. TVF-EMD(时变滤波的经验模态分解,Time-Varying Filtered Empirical Mode Decomposition) 3. EEMD(集成经验模态分解,Ensemble Empirical Mode Decomposition) 4. VMD(变分模态分解,Variational Mode Decomposition) 5. CEEMDAN(完全自适应噪声集合经验模态分解,Complementary Ensemble Empirical Mode Decomposition with Adaptive Noise) 6. LMD(局部均值分解,Local Mean Decomposition) 7. RLMD(鲁棒局部均值分解, Robust Local Mean Decomposition) 8. ITD(固有时间尺度分解,Intrinsic Time Decomposition) 9. SVMD(逐次变分模态分解,Sequential Variational Mode Decomposition) 10. ICEEMDAN(改进的完全自适应噪声集合经验模态分解,Improved Complementary Ensemble Empirical Mode Decomposition with Adaptive Noise) 11. FMD(特征模式分解,Feature Mode Decomposition) 12. REMD(鲁棒经验模态分解,Robust Empirical Mode Decomposition) 13. SGMD(辛几何模态分解,Spectral-Grouping-based Mode Decomposition) 14. RLMD(鲁棒局部均值分解,Robust Intrinsic Time Decomposition) 15. ESMD(极点对称模态分解, extreme-point symmetric mode decomposition) 16. CEEMD(互补集合经验模态分解,Complementary Ensemble Empirical Mode Decomposition) 17. SSA(奇异谱分析,Singular Spectrum Analysis) 18. SWD(群分解,Swarm Decomposition) 19. RPSEMD(再生相移正弦辅助经验模态分解,Regenerated Phase-shifted Sinusoids assisted Empirical Mode Decomposition) 20. EWT(经验小波变换,Empirical Wavelet Transform) 21. DWT(离散小波变换,Discraete wavelet transform) 22. TDD(时域分解,Time Domain Decomposition) 23. MODWT(最大重叠离散小波变换,Maximal Overlap Discrete Wavelet Transform) 24. MEMD(多元经验模态分解,Multivariate Empirical Mode Decomposition) 25. MVMD(多元变分模态分解,Multivariate Variational Mode Decomposition)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值