【4.14日题解】——新二叉树

【4.14日题解】——新二叉树_第1张图片

☘前言☘

今日份水题开始。希望有想要提高的同学跟我们一起来刷题0.0
4.14日每日一题——新二叉树

作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
全文大约阅读时间: 20min


全文目录

  • ☘前言☘
  • 解题思路
  • 写在最后


P1305 新二叉树

解题思路

和昨天的又有啥区别呢,直接建树就完事了。然后按照执佬的要求,使用非递归的方式实现前序遍历。

#include 
struct node{
        int left;
        int right;
}Node[30];
char s[30];
int main(){
        int zhan[30],n, top = 0, hash[30] = {0}, root;//hash for root
        scanf("%d",&n);//read n

        for(int i = 0;i < n;++i){
                char a, l, r;
                scanf("%s", s);
                a = s[0], l = s[1], r = s[2];
                if(a == '*') continue;
                a -= 'a';
                if(l != '*')    hash[l - 'a'] = 1, Node[a].left = l - 'a';
                else    Node[a].left = -1;
                if(r != '*')    hash[r - 'a'] = 1, Node[a].right = r- 'a';
                else    Node[a].right = -1;
        }//read all data

        for(int i = 0;i < n;++i)
                if(!hash[i])    {root = i;break;}
        zhan[top++] = root;     //ruzhan root
        while(top){
                char tmp = zhan[--top];
                printf("%c", tmp + 'a');
                if(Node[tmp].right != -1) zhan[top++] = Node[tmp].right;
                if(Node[tmp].left != -1) zhan[top++] = Node[tmp].left;
        }
        return 0;
}

【4.14日题解】——新二叉树_第2张图片


写在最后

今天就这样,明日再见0.0

你可能感兴趣的:(每日一题,linux,c++,c语言,算法)