题解 | #二叉树遍历#

二叉树遍历

https://www.nowcoder.com/practice/6e732a9632bc4d12b442469aed7fe9ce

#include<stdio.h> 
#include<string.h> 
#include<malloc.h> 
typedef struct tree { 
    struct tree *left; 
    struct tree *right; 
    char data; 
}t; 

int find(char a,char *b) { 
    int i=0; 
    while(b[i]!=a) { 
        i=i+1; } 
    return i; 
} 

void write(t *tree) { 
    if(tree->left!=NULL) { 
        write(tree->left); 
    } 
    if(tree->right!=NULL) { 
        write(tree->right); 
    } 
    printf("%c",tree->data); 
} 

void spy(char *str,int i,int j,char *a) { 
    int k;

    for (k = 0; k < j - i + 1; k++) {
        a[k] = str[k + i];
    }
    a[k] = '\0';
} 

t* get(char* str1, char* str2) {
    t* tr;
    char* str11, *str22;
    str11 = (char*)malloc(100 * sizeof(char));
    str22 = (char*)malloc(100 * sizeof(char));
    int d;
    tr = (t*)malloc(sizeof(t));
    tr->data = str1[0];
    tr->left = NULL;
    tr->right = NULL;
    d = find(str1[0], str2);
    if (d >= 0) {
        if (d > 0) {
            spy(str1, 1, d, str11);
            spy(str2, 0, d - 1, str22);
            tr->left = get(str11, str22);
        }
        if (d < strlen(str1) - 1) {
            spy(str1, d + 1, strlen(str1) - 1, str11);
            spy(str2, d + 1, strlen(str2) - 1, str22);
            tr->right = get(str11, str22);
        }
    }
    return tr;
}

int main() {
    int i, n;
    char a[26], b[26];
    while(scanf("%s %s",&a,&b)!=EOF){
        t* tr;
        tr = get(a, b);
        write(tr);
        printf("\n");
    }
    
}

全部评论
看代码中,不是自己写的
点赞 回复 分享
发布于 2024-03-16 17:39 江西

相关推荐

水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
07-03 16:02
门头沟学院 Java
今天面试,非常紧张,面试官问我springboot有哪些核心模块都答不上来了,真的对自己无语了!
程序员小白条:28届我勒个去,很多人面试都没机会
查看1道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务