第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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值