- 1、本文档共106页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章[树和二叉树]
第6章 树和二叉树;树型结构是一类重要的非线性结构。
树结构在客观世界里是大量存在的,树在计算机领域中也有着广泛的应用。;A;结点——表示树中的元素,包括数据项及若干指向其子树的分支;A;6.2 二叉树;
(a)
空二叉树;6.2.2 二叉树的性质; 性质2:深度为k的二叉树至多有2k-1个结点(k≥1)。; 性质3: 对任何一棵二叉树T,如果其终端结点数为n0,度为2的 结点数为n2,则n0=n2+1。;由于这些分支都是由度为1和2的结点射出的,所以有:
B=n1+2n2
因此,N=B+1=n1+2n2+1 (6-2); 满二叉树;1;完全二叉树的特点; 性质5: 如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到第?log2n ?+1层,每层从左到右),则对任一结点i(1≤i≤n),有:;图6.6 完全二叉树中结点i和i+1;图6.6 完全二叉树中结点i和i+1;图6.6 完全二叉树中结点i和i+1;图6.6 完全二叉树中结点i和i+1;1、顺序存储结构;a;a;typedef struct BiTNode
{ TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;;;用链表表示的二叉树中也会存在许多空链域。例如在含有n个结点的二叉链表中,共有2n个链域,实际用n-1链域(仅有n-1个分支),还有n+1个空链域。
可以利用这些空链域存储其它有用信息,从而得到另一种链式存储结构——线索链表。; 6.3 遍历二叉树和线索二叉树;二叉树是由三个基本单元组成:根结点、左子树和右子树。因此,若能依次遍历这三部分,便是遍历了整个二叉树。;先序遍历算法;A;若二叉树为空树,则空操作;否则,;A;后序遍历算法;A;所谓二叉树的层序遍历,是指从二叉树的第一层(根结点)开始,从上至下逐层遍历,在同一层中则按从左到右的顺序对结点逐个访问。;A;例如下图所示的二叉树表示下述表达式; (1)查询二叉树中某个结点;
Status Preorder (BiTree T, TElemType x, BiTree p) {
};算法基本思想:先序(或中序或后序)遍历二叉树,在遍历过程中查找叶子结点,并计数。 ; void CountLeaf (BiTree T, int count){
if ( T )
{ if ((!T-lchild) (!T-rchild))
count++; // 对叶子结点计数
CountLeaf( T-lchild, count);
CountLeaf( T-rchild, count);
}
} ;int CountLeaf (BiTree T) {
if (!T ) return 0;
if (!T-lchild !T-rchild) return 1;
else{
m = CountLeaf( T-lchild);
n = CountLeaf( T-rchild);
return (m+n);
}
};int Count (BiTree T){
//返回指针T所指二叉树中所有结点个数
if (!T ) return 0;
if (!T-lchild !T-rchild) return 1;
else{
m = Count ( T-lchild);
n = Count ( T-rchild);
return (m+n+1);
}
} ;算法基本思想:首先分析二叉树的深度和它的左、右子树深度之间的关系;int Depth(BiTree T ) { /*返回二叉树的深度 */
if ( !T ) depthval = 0;
else { ;A;Status CreateBiTree (BiTree T ){ /*按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树,构造二叉链表表示的二叉树T */ ;3、遍历二叉树的非递归算法;void preorder(JD *r) /*先序遍
您可能关注的文档
- 第五章计算机软件n.ppt
- 第五章血液与运动.ppt
- 第五章钢的热处理_3.4.5.6节.ppt
- 第五章资本与增长.ppt
- 第五章造型案例实战.ppt
- 第五章谭浩强版C程序设计教学PPT.ppt
- 第五章高级编辑技巧.ppt
- 第五章饱和烃.output.ppt
- 第五章集合与查找.ppt
- 第五章高维列联表.ppt
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)