Kai’blog

技术博客

【树论】新二叉树

原题传送门

思路


这道题的数据很水,准确说是有个bug——第一组数据一定是根节点和他的左右子节点,而先先序遍历的特点正是根左右的类深搜模式,于是只要先输出根,然后找到以根的左节点为父节点的节点,输出之,再找以此节点的左节点为父节点的节点,输出之......以此类推,直到不在有左节点,然后返回上一步,对右节点进行同样的操作,没有节点后就在返回,继续搜索其父节点的右节点......以此类推,直到返回到根节点的右节点,并将其搜索完,最后,返回根节点,递归结束。

这很明显是个递归的过程:
若参数非'*',则先输出参数,然后找到参数当父节点的节点组,再对这个参数组的左右节点的值进行递归即可。

这道题名曰树,但实际上就是一道递归题,无需建树~~~

Code


#include<iostream>
using namespace std;
int n;
char a[30][3];
void f(char x)
{
    if(x!='*')
    {
        cout<<x;
        for(int i=1;i<=n;i++)
            if(a[i][0]==x)
            {
                f(a[i][1]);
                f(a[i][2]);
            }
    }
    return;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i][0]>>a[i][1]>>a[i][2];
    f(a[1][0]);
    return 0;
}
posted @ 2019-08-12 19:55  Kai02  阅读(245)  评论(0编辑  收藏  举报
Copyright © 2019-2020 拱大垲. All rights reserved.