当前位置: 代码迷 >> 综合 >> 洛谷 P1305 新二叉树
  详细解决方案

洛谷 P1305 新二叉树

热度:18   发布时间:2023-11-24 12:12:57.0

题目传送门<==戳这

先按照输入简单的构建一下这棵树,然后按照前序遍历(根 左 右)的顺序遍历这棵树即可

上代码:

#include <iostream>
#include <cstdio>
using namespace std;
struct tree{
    char lc;   ==>左儿子char rc;   ==>右儿子
}a[200];	   ==>这里超级妙,数组下标可以是字符,只不过是以ASCII码的形式储存
char h1,h;	   ==>主根的数组下标,各个字根的数组下标
void dfs(char root){
    if(root=='*') return;	==>递归边界(节点为空时)else{
    cout<<root;			==>“根”dfs(a[root].lc);	==>“左”dfs(a[root].rc);	==>“右”}
}
int main(){
    int n;cin>>n;cin>>h1;			==>第一行输入的是主根,比较特殊,后面dfs的起点也是主根,所以单独储存一下	cin>>a[h1].lc;		==>输入左儿子cin>>a[h1].rc;		==>输入右儿子for(int i=2;i<=n;i++){
    		==>继续输入cin>>h;cin>>a[h].lc;cin>>a[h].rc;}dfs(h1);			==>从主根开始dfs
}