数据结构——树
树是由N个结点(或元素)组成的有限集合。
树的逻辑表示方法有:树形表示法、文氏图表示法、凹入表示法、括号表示法
结点的度:结点子树的个数
数的度:所有结点的度中的最大值,通常把度为M的树称为M次树。
分支结点:度不为零的结点
叶子结点:度为零的结点
路径:一个结点到另外一个结点的可达序列
路径长度:路径上的结点数-1
结点层次:即结点深度,从根节点开始,根节点为第一层,以此类推,
树的高度:即树的深度,树中结点的最大层次
有序树:按照一定的次序从左到右排列的,且相对次序是不能随意变换的
无序树:没有规律的
森林:N个互不相交树的集合,把含有多个子树的根节点删掉就变成了森林,反之个M(>1)棵独立的树加上一个根节点,森林就变成了一棵树。
树的性质:
树中的结点树等于所有结点的度数之和+1 |
度为M的树中第i层最多有Mi-—1个结点(i>=1) |
高度为h的m次树最多有mk-1/ m-1个结点 |
具有n个结点的m次树的最小高度为logm(n(m-1)+1),最大高度为n-m+1 |
树的遍历:①先根遍历:根左右②后根遍历:左右根③层次遍历从根结点开始,按从上到下,从左到右的次序
二叉树:有限的结点集合、这个集合或者为空,或者由一个根结点和两棵互不相交的称为左子树和右子树的二叉树组成。
度为2的树中至少有一个结点的度为2,二二叉树没有这种要求
度为2的树不区分左、右子树,二叉树严格区分
满二叉树:①所有分支结点都有左右孩子结点②所有叶子结点都集中在二叉树的最下一层。一棵高度为h的树有2h-1个结点
非空满二叉树特点:①叶子结点都在最下一层②只有度为0和度为2的结点
完全二叉树:①最多只有最下面两层的结点度数可以小于2,②最下面一层的叶子结点都依次排列在最左边的位置上
非空完全二叉树特点:①叶子结点只可能在最下面两层出现②对于最大层次中的叶子结点,都依次排列在该层最左边的位置上③如果有度为1的结点只能有一个,且这个几点只有左孩子没有有孩子④按照层序编号时,一旦出现编号为i 的结点是叶子结点或者只有左孩子,则编号大于i的结点均为叶子结点⑤当结点总数为奇数时,度为1的结点有0个,结点总数为偶数时。度为1的结点有1个。
二叉树的性质:①非空二叉树的叶子结点数等于双分支结点数+1(度为0的结点数=度为2的结点数+1)②非空二叉树的第i层最多有2i-1个结点③高度为h的二叉树最多有2h-1个结点④具有结点的完全二叉树高度为log2(n+1)或者log2n+1⑤完全二叉树中层次编号为i的结点有一下性质:①若2i<=n,则编号为i的结点为分支结点,否则为叶子结点,②若n为奇数,则每个分子结点都有左右孩子,若n为偶数,则最大的分支结点只有左孩子,③若编号为i的结点有左孩子则编号为2i,有右孩子,则编号为:2i+1④除根结点外,如果一个结点编号为i ,则他的双亲结点的编号为i/2;
树转化为二叉树:①树中相邻兄弟之间加一条连线②对树中的每个结点只保留它和长子之间的连线,删除和其他孩子之间的连线,③以根结点为轴心,旋转45°
森林转换为二叉树:①将森林中的每棵树转换为二叉树②第一棵不动,后面依次称为右孩子
二叉树转换为树:①若某结点是其双亲的左孩子,则把该结点的右孩子,右孩子的右孩子等都与该结点的双亲结点连起来②删除原来的连线,③逆时针旋转45°
二叉树还原为森林:①抹掉所有的“双亲-右孩子”关系,分为若干个二叉树,②分别将这些二叉树还原为树
先序遍历:根左右、中序遍历:左根右、后序遍历:左右根、层次遍历:一层一层地
任何N个不同结点的二叉树都可以由它的中序序列和先序序列唯一地确定
先序的第一个结点就是根,然后把中序队列分开,依次查找
任何N个不同结点的二叉树都可以由它的中序序列和后序序列唯一地确定
后序的最后一个结点就是根,然后把中序队列分开,依次查找
对于有n个结点的二叉树来说,采用二叉链存储结构时,每个结点有两个指针域,总共有2n个指针域,但是只有(n-1)个结点被有效指针所指向,所以剩下n+1个空指针域
线索二叉树:某结点左指针为空时,另该指针指向线性序列中该结点的前驱结点,某结点的右指针为空时,指向线性序列中该节点的后继结点。创建线索的过程称为线索化,线索化的二叉树称作线索二叉树
哈夫曼树:在n0个带权叶子结点构成的所有二叉树中,带权路径长度wPL(所有叶子结点的带权路径之和,称为该树的路径长度,即权值*路径长度)最小的二叉树称为哈夫曼树或最优二叉树
哈夫曼树的构造方法:
对于具有n0个叶子结点的哈夫曼树,共有2n0-1个结点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南