第5章学习小结
Posted aulikeher32
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第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。
以上是关于第5章学习小结的主要内容,如果未能解决你的问题,请参考以下文章