ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:28.08KB ,
资源ID:15708219      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15708219.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构自学总结2非线性结构Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构自学总结2非线性结构Word文档下载推荐.docx

1、任意一个节点的子节点的个数都不受限制的树 2 二叉树:任意一个节点的子节点个数最多两个,且子节点的位置不能 更改。 二叉树的分类:一般二叉树, 满二叉树:在不增加树的层次的前提下,无法再多添加一个节点的二叉树就是满二叉树。 完全二叉树:如果只是删除了满二叉树最底层最右边的连续若干个节点,这样形成的二叉树就是完全二叉树。 3 森林:n个互不相交的树的集合。 树的存储: 二叉树的存储: 连续存储(完全二叉树) 优点:查找某个节点的父节点和子节点(也包括判断有没有节点)很方便 缺点:耗用的内存很大。 链式存储: 一般树的存储: 1 双亲存储表示法:求父节点方便 2 孩子链式表示法:求子节点方便 3

2、双亲孩子表示法:求父节点和子节点都很方便 4 孩子兄弟链式表示法:把一个普通树转化成二叉树来存储 具体的转换方法:设法保证任意一个节点的左指针域指向他的第一个孩子,右指针域指向他的堂兄弟,只要能满足此条件,就可以把一个普通树转化为一个二叉树。一个普通树转化成德二叉树一定没有右子树。 森林的存储:先把森林转化为二叉树,再存储二叉树 树的操作:1遍历 先序遍历(根左右) 中序遍历(左根右) 后序遍历(左右根) 2已知两种遍历序列求原始二叉树:1 已知先序遍历和中序遍历:根据先序遍历确定根节点,再根据先序遍历确定根节点左子树和右子树的根(最先出现的即为所选),根据中序遍历和先序遍历一次确定该二叉树。

3、 2 已知中序遍历和后序遍历:根据后序遍历确定根节点,再根据中序遍历确定左子树和右子树有哪些,在判断左右子树的根节点(左右子树的序列中根据中序遍历,最后出现的即为根节点。)(注:已知先序遍历和后序遍历是无法还原出原始的二叉树的) 也就是说只有通过先序和中序 或者 通过中序和后序 我们才能唯一的确定一个二叉树。树的应用:树是数据库中数据组织的一种重要形式 操作系统子父进程的关系本身就是一棵树 面向对象语言中类的继承关系本身就是一颗二叉树 哈弗曼树(最优二叉树)1 二叉树的各种方法的实现 /*2012年3月19日16:51:01 作者:陈金林目的:实现二叉树的各种算法*/#include stdl

4、ib.h#define MaxSize 50typedef char ElemType;typedef struct node ElemType data; /数据元素 struct node *lchild; /指向左孩子 struct node *rchild; /指向右孩子 BTNode;extern void CreateBTNode(BTNode *&b,char *str);extern BTNode *FindNode(BTNode *b,ElemType x);extern BTNode *LchildNode(BTNode *p);extern BTNode *RchildN

5、ode(BTNode *p);extern int BTNodeDepth(BTNode *b);extern void DispBTNode(BTNode *b);extern int BTWidth(BTNode *b);extern int Nodes(BTNode *b);extern int LeafNodes(BTNode *b);int main(void) BTNode *b,*p,*lp,*rp; CreateBTNode(b,A(B(D,E(H(J,K(L,M(,N),C(F,G(,I); printf(nn=二叉树的各个方法的实现=n (1)输出二叉树: DispBTNo

6、de(b); (2)H结点: p=FindNode(b, if (p!=NULL) lp=LchildNode(p); if (lp!=NULL) printf( 左孩子为%c ,lp-data); else 无左孩子 rp=RchildNode(p); if (rp! 右孩子为%c,rp- 无右孩子 (3)二叉树b的深度:%dn,BTNodeDepth(b); (4)二叉树b的宽度:,BTWidth(b); (5)二叉树b的结点个数:,Nodes(b); (6)二叉树b的叶子结点个数:,LeafNodes(b); return 0;void CreateBTNode(BTNode *&b,c

7、har *str) /由str串创建二叉链 BTNode *StMaxSize,*p=NULL; int top=-1,k,j=0; char ch; b=NULL; /建立的二叉树初始时为空 ch=strj; while (ch!=0) /str未扫描完时循环 switch(ch) case (:top+;Sttop=p;k=1; break; /为左结点)top-;break;,k=2; /为右结点 default:p=(BTNode *)malloc(sizeof(BTNode); p-data=ch;p-lchild=p-rchild=NULL; if (b=NULL) /p指向二叉树

8、的根结点 b=p; else /已建立二叉树根结点 switch(k) case 1:Sttop-lchild=p; case 2:rchild=p; j+; ch=strj;BTNode *FindNode(BTNode *b,ElemType x) /返回data域为x的结点指针 BTNode *p; if (b=NULL) return NULL; else if (b-data=x) return b; else p=FindNode(b-lchild,x); if (p! return p; else return FindNode(b-rchild,x);BTNode *Lchil

9、dNode(BTNode *p) /返回*p结点的左孩子结点指针 return p-lchild;BTNode *RchildNode(BTNode *p) /返回*p结点的右孩子结点指针rchild;int BTNodeDepth(BTNode *b) /求二叉树b的深度 int lchilddep,rchilddep; if (b=NULL) return(0); /空树的高度为0 lchilddep=BTNodeDepth(b-lchild); /求左子树的高度为lchilddep rchilddep=BTNodeDepth(b-rchild); /求右子树的高度为rchilddep r

10、eturn (lchilddeprchilddep)? (lchilddep+1):(rchilddep+1);void DispBTNode(BTNode *b) /以括号表示法输出二叉树(此处用的是先序遍历) if (b! printf(%c,b- if (b-lchild!=NULL | b-rchild!( DispBTNode(b- if (b-=NULL) printf(,)/*void DispBTNode1(BTNode *b) /以括号表示法输出二叉树(此处用的是中序遍历)void DispBTNode2(BTNode *b) /以括号表示法输出二叉树(此处用的是后序遍历)int BTWidth(BTNode *b) /求二叉树b的宽度 struct int lno; /结点的层次编号 BTNode *p; /结点指针 QuMaxSize; /定义顺序非循环队列 int front,rear; /定义队首和队尾指针 int l

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1