第5章学习小结

第五章主要学习了树的知识,以前一直很好奇,为什么电脑能存储像树一样的数据结构,学完才发现,ADT加数组或者ADT加链表真的可以衍生出多种多样的数据类型,以下做出本章小结:

1.利用ASCII码实现不同类型的数据的转换,如:int = char - ‘0’。

2.学会了利用bool类型标记找出所需数据类型,如找根节点,先将bool型数组初始化成false,输入过的节点标记为true,那么为false的即为根节点。

3.树的四种遍历方式:利用递归实现三种遍历方式

先序:

void PreOrderTravel(node t[], int x)
{//先序遍历t[x]为根结点的树t
cout << t[x].name << " ";
if(t[x].lch!=-1) PreOrderTravel(t, t[x].lch);
if(t[x].rch!=-1) PreOrderTravel(t, t[x].rch);
}

中序:

void InOrderTravel(node t[], int x)
{//中序遍历t[x]为根结点的树t
if(t[x].lch!=-1) InOrderTravel(t, t[x].lch);
cout << t[x].name << " ";
if(t[x].rch!=-1) InOrderTravel(t, t[x].rch);
}

后序:

void PostOrderTravel(node t[], int x)
{//后序遍历t[x]为根结点的树t
if(t[x].lch!=-1) PostOrderTravel(t, t[x].lch);
if(t[x].rch!=-1) PostOrderTravel(t, t[x].rch);
cout << t[x].name << " ";
}

以及利用<queue>头文件包含的函数实现层次遍历。

void levelOrderTraverse(node t[], int x)
{//层次遍历t[x]为根结点的树t
int tmp;
queue<int> q;
q.push(x); //根结点所在下标入栈

while(!q.empty()){
tmp = q.front();
q.pop();
if(tmp!=-1){
cout << t[tmp].name << " ";
q.push(t[tmp].lch);
q.push(t[tmp].rch);
}
}
}

主要问题:

1.对函数体运行的具体流程还是想得不够明白透彻(可能真的不够聪明)。

2.还是会拖ddl。

原文地址:https://www.cnblogs.com/AUlikeHER32/p/10810499.html

时间: 2024-08-30 15:42:41

第5章学习小结的相关文章

第三章学习小结—-转

[学习目标] 01掌握一维数组的声明和使用方法(OK) 02掌握二维数组的声明和使用方法(OK) 03掌握字符串的声明.赋值.比较和连接方法(连接很少用) 04熟悉字符的ASCII码和ctype.h中的字符函数 05正确认识++.+=等能修改变量的运算符(OK) 06学会用编译选项-Wall获得更多的警告信息(OK) 07了解不同操作系统中换行符的表示方法(嗯) 08掌握fgetc和getchar的使用方法(fgetc基本没用过) 09掌握预处理和迭代开发的技巧(嗯) 程序3-1 逆序输出 输入

数据结构 第一章学习小结

数据结构   第一章学习小结 1.数据结构第1章的心得体会: 这周学习了数据结构的绪论及第一章.初步了解了数据结构与算法的相关概念,一开始看书看视频时觉得还挺抽象的,不能够完全理解.但是反复多看了几遍之后,结合例题,自己去操作去跑代码,慢慢觉得容易理解接受起来了.由于现在以网课形式进行教学,老师上课的同时基本还是靠自己去理解学习.当然老师也发挥很大的作用,比如让我们更深入的了解递归的空间复杂度为什么与问题规模有关,又怎样去找到该函数的临界值等等.既锻炼了我们深入思考的能力,也让我们更加清楚了解不

数据结构第四章学习小结

第四章主要是串和数组的学习,之前对串和数组的应用仅限于对其单独处理,本章学习着重于对具体题目的实际操作,实践了串的模式匹配算法,对其有了更深入的了解,数组的应用拓展到了稀疏矩阵的存储的实现. 一.串 串的模式匹配 BF算法 首先未匹配到串尾时,将两个字符串一一匹配,可用C++自带的length()函数实现 while(i<=S.length()&&j<=T.length()) 接下来就是匹配的过程 if(S[i]==T[j]){ i++;j++; }//若匹配则继续比较下一位

第6章学习小结

一  学习小结 图的基本知识 1. 图分为无向图和有向图.若无向图有 n(n-1)/2 条边,则称之为无向完全图,若有向图有 n(n-1) 条弧,则称之为有向完全图 2. 带权图通常称为网 3. 度:顶点v的度指和v相关联的边的数目,记为TD(v)   入度:以v为头的弧的数目   出度:以v为尾的弧的数目 4. 路径长度是一条路径上经过的边或弧的数目 5. 强连通图:在有向图G中,对于每一对vi,vj∈V,从vi到vj都存在路径 6. 连通生成树:一个极小连通子图,它含有图中全部顶点,但只有足

第七章学习小结

第七章主要学习了很多种查找方式,从最简单的线性表查找到树表的查找到散列表查找,不同的查找方式有不同的优点,下面根据练习来实际应用这些知识. 这个问题的任务很简单:将一个不同的正整数序列插入哈希表,并输出输入数字的位置.散列函数定义为h(key)=key%tsize,其中tsize是散列表的最大大小.二次探测(只有正增量)用于解决碰撞.请注意,表的大小最好是素数.如果用户给定的最大大小不是质数,则必须将表大小重新定义为大于用户给定大小的最小质数.输入规格:每个输入文件包含一个测试用例.对于每种情况

数据结构第一章学习小结

第一章学习了一些基本概念以及它们之间的联系,对数据结构这门课程有了初步的了解.刚开始看书的时候,有很多地方不是很明白,对一些名词的解释也不懂,后来结合视频讲解才比较透彻.一开始不清楚ADT的作用,直到自己去写了一遍才有体会.当自己不懂或者不会的时候,一定要自己上手去写去打代码,才能明白困扰自己的那个点在哪里,通过查资料.看视频等等方式解决这个问题.数据结构和算法是相辅相成的,理解透彻基本的概念,才能为之后的学习铺路.这学期要肯花功夫,本来基础就不是很好,更应该笨鸟先飞.对概念的理解不透彻,或言之

DS第4章学习小结

你对本章内容的小结 完成作业或实践时解决困难的经验分享 这段时间,你参考了哪些值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码) 目前学习过程中存在的困难,待解决或待改进的问题 上次博客确定的目标达到了吗?如果没达到,请分析原因 接下来的目标 一.你对本章内容的小结 第4章主要学习了串.数组 串主要学习了有关 模式匹配算法 的两种算法:T(n)=O(m*n)的BF算法 和 T(n)=O(m+n)的KMP算法, KMP算法难在求出 模式的next数组.(即求ne

DS第七章学习小结

第七章小结 先列出一些基本的概念: ①关键字:数据元素(记录)中某个数据项的值,用它可以表示一个数据元素. ②动态查找表/静态查找表:若在查找的过程中进行修改操作(插入或删除),则相应的表为动态查找表,否则为静态查找表. ③平均查找长度:为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值称为查找算法在查找成功时的平均查找长度.公式如下:ASL=∑PiCi (i=1,2,3,…,n),可以简单以数学上的期望来这么理解.其中:Pi 为查找表中第i个数据元素的概率,Ci为找到第i个数据

第二章学习小结

数据结构第二章的学习结束了,了解了顺序表,单链表的建立,插入,删除,查找的算法,以及对它们时间复杂度,空间复杂度的分析.学会区分头指针,头结点和首元结点. 前插法,后插法创建单链表,相比之下,我觉得后插法比较好理解.双向链表就是那个表示被处理结点的前驱的后继(p->prior->next),结点的后继的前驱(p->next->prior)要区分开. 作业,说实话,一开始的时候,我真的很懵,书上的算法描述,我可以看的很明白,同时也感到很奇怪,甚至还一度认为那是可以敲上电脑进行编译运行