码迷,mamicode.com
首页 > 其他好文 > 详细

第5章学习小结

时间:2019-05-05 01:30:28      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:post   初始化   实现   不同   数组   层次遍历   入栈   包含   adt   

第五章主要学习了树的知识,以前一直很好奇,为什么电脑能存储像树一样的数据结构,学完才发现,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章学习小结

标签:post   初始化   实现   不同   数组   层次遍历   入栈   包含   adt   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!