上一集,Small Code King使用了pqBFS缠住了我,又使用传送门来秀了我一脸,我自信心暴跌。
没看的还不赶紧去看一看?顺便点个三连。https://blog.csdn.net/weixin_43417464/article/details/115271713
虽然自信心不太OK了,但是今天下午的信息课还是要上啊。
有些读者就想问了,“你这信息课是怎么了?一个星期,还是同一天,两节课啊?哪个培训机构啊,我去蹭一蹭”
这可不一样,上一次是SCK(干脆改成Small International Code King算了,SICK。。。)的课,这下不一样了,这是———
#include<bits/stdc++.h>
using namespace std;
int main(){
char c[4]="学而思";reverse(c,c+3);
for(int i=0;i<4;i++) cout<<c[i];
return 0;
}
英文缩写:TAL(Think And Learn),思而学的
qswl,这才结束BFS的洗礼,又上我最头疼的TREE!
首先,是树的概念,就是一个节点分叉成一堆节点,这些节点又分叉,具体的概念可以点进去https://baike.baidu.com/item/%E6%A0%91/2699484#viewPageContent
概念有亿点多,仔细看。
中间有一点说到了:
遍历表达法
遍历表达法有4种方法:先序遍历、中序遍历、后序遍历、层次遍历
例如上图:
其先序遍历(又称先根遍历)为ABDECF(根-左-右)
其中序遍历(又称中根遍历)为DBEAFC(左-根-右)(仅二叉树有中序遍历)
其后序遍历(又称后根遍历)为DEBFCA(左-右-根)
其层次遍历为ABCDEF(同广度优先搜索)
根,就是当前这棵树(也许在一棵大树中,也许自己就是大树的全部)的根节点。
左,就是当前这棵树左边的子树,就是左子树
右,就是当前这棵树右边的子树,就是右子树
应该能懂了吧,还有,就是在一般情况下,只需两种遍历方式即可确定一棵树。
(这个技能需要练)
但是,这可恶的PAL偏偏就不给脸练的时间,直接用概念来讲用编程解决的方法。
好吧,我尽力了,几种遍历的输出我总结出来了
//直接跳过建树的过程
typedef struct Node;
typedef Node *tree;
struct Node{
char data;
tree lchild,rchild;
};
tree bt;
void preorder(tree bt){//先序
if(bt){
cout<<bt->data;
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void inorder(tree bt){//中序
if(bt){
inorder(bt->lchild);
cout<<bt->data;
inorder(bt->rchild);
}
}
void postorder(tree bt){//后序
if(bt){
postorder(bt->lchild);
postorder(bt->rchild);
cout<<bt->data;
}
}
//总结辛苦,三连请苦
再推荐一道题练练手,下星期必出下集http://ybt.ssoier.cn:8088/problem_show.php?pid=1340