- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 非线性数据结构树和图 ;树形结构;树的逻辑结构;树的递归定义:;树结构举例;与树相关的术语 ;? 兄弟结点:具有相同父结点的结点互为兄弟结点。
? 结点的层次:根结点的层次为1,其子结点的层次为2。依次类推,子结点的层次总比父结点多一层。
? 树的深度:树中结点所在的最大层次。
? 有序树和无序树:将树中各结点的子树看成自左向右有序的,则称该树为有序树。否则称为无序树。
? 森林:由零棵或有限棵互不相交的树组成的集合。 ;二叉树的定义;二叉树的五种基本形态;二叉树与树的区别;二叉树与树的区别(二);特殊二叉树;满二叉树;完全二叉树;平衡二叉树;二叉排序树定义;二叉树的性质一;二叉树的性质二;包含n(n0)个结点的二叉树总的分支数为n-1。; 任意二叉树,若含有n0个叶结点、n2个度为2的结点,则必存在关系式n0=n2+1 。; 具有n个结点的完全二叉树的深度为 [log2(n)]+1。; 若对含n个结点的完全二叉树从上到下、从左至右进行1至n的编号,则对二叉树中任意一个编号为i的结点:
① 若i=1,则该结点是二叉树的根,无父结点。否则,编号为[i/2]的结点为其父结点;
② 若2in,则该结点无左孩子。否则,编号为2i的结点为其左孩子结点;
③ 若2i+1n,则该结点无右孩子。否则,编号为2i+1的结点为其右孩子结点。
证明:通过对i进行归纳即可得证。;验证性质六;二叉树的链式存储 ;二叉树的链式存储;二叉树的遍历;前序法(PreOrder);中序法(InOrder);后序法(PostOrder);二叉树的遍历举例;二叉树遍历算法(递归、前序法);二叉树遍历算法(递归、前序法验证);(2)中序遍历
对一颗非空二叉树进行中序遍历时,首先按中序遍历方式访问左子树,然后访问根结点,最后按中序遍历方式访问右子树。中序遍历算法如下:
void InOrder(BinTreeNode *t)
{
if(t)
{
}
};(3)后序遍历
对一颗非空二叉树进行中序遍历时,首先按后序遍历方式访问左子树,然后按后序遍历方式访问右子树,最后访问根结点。后序遍历算法如下:
void PostOrder(BinTreeNode *t)
{
if(t)
{
}
};表达式树及应用;表达式树应用举例;图的基本概念 ;图例;有向图、无向图;边、弧;顶点、邻接点;顶点的度(Degree);路径、长度;连通图、强连通图、连通分量;子图、生成树;网、权;图的存储方式 ; 图的邻接矩阵存储可用下面结构体表示:
#define MAX_NUM 100 //最大顶点个数
typedef struct {
VertexType vexs[MAX_NUM]; //顶点信息数组
ArcType Matrix[MAX_NUM][MAX_NUM]; //邻接矩阵
int vexnum,arcnum; //图实际顶点数和弧(边)数
int kind; //图种类标志,1—有向图,2—有向网 // 3—无向图,4—无向网
} MGraph;
其中:ArcType是顶点关系的数据类型。
VertexType是顶点的数据类型。
MAX_NUM表示最多可存的顶点数。; ;;2.邻接表
邻接表存储形式是一种链表与数组结合的存储形式。在邻接表中有两种结点,一种是头结点,另一种是表结点。
(1)头结点存储一个顶点的详细信息,为了便于管理,所有头结点都存放在一个数组中。
(2)对于某个顶点而言,需要将所有与它邻接的顶点存储为表结点形式,并将它们链接成单链表,这个单链表就称为该顶点的邻接表。
(3)还要在每个顶点的头结点中存储指向其邻接表首元结点的指针。
?;邻接表的结点结构;邻接表的举例;逆邻接表;图的邻接表描述 ;typedef struct {
AdjList headArray; //头结点数组
int vexnum, arcnum; //图的当前顶点数和弧数
int kind; //图的种类标志
} ALGraph;
其中:
AdjNode为表结点;
InfoType为与边相关信息的数据类型(包括权等);
VNode为头结点;
VertexType是顶点的数据类型;
MAX_NUM表示最多可以存放的顶点个数。;图的遍历;图的遍历方法;深度优先遍历法;深度优先遍历法举例;遍历产生的结果;;bool visited[MAX]; //顶点访问标志数组
void DFSTraverse(A
文档评论(0)