题解 | #二叉树遍历#

二叉树遍历

https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef

#include <stdio.h>
#include<stdlib.h>

typedef struct tnode {
    char data;
    struct tnode* left;
    struct tnode* right;
} tnode;

tnode* creat(char* s, int* i) {
    if (s[*i]) {
        if (s[*i] == '#') {
            return NULL;
        }
        else {
            tnode* newnode = (tnode*)malloc(sizeof(tnode));
            newnode->data = s[*i];
            (*i)++;
            newnode->left = creat(s, i);
            (*i)++;
            newnode->right = creat(s, i);
            return newnode;
        }
    }
    return NULL;
}

void inorder(tnode* root) {
    if (root == NULL) {
        return;
    }
    inorder(root->left);
    printf("%c ", root->data);
    inorder(root->right);
}

int main() {
    char s[100] = { 0 };
    int i = 0;
    scanf("%s", s);
    tnode* root = creat(s, &i);
    inorder(root);
}

全部评论
为什么在create()中递归调用create()时是(s,i)而不是(s,&i)呢
点赞 回复 分享
发布于 2023-03-19 10:18 山东

相关推荐

梦倩倩:同学,瞅瞅我司,医疗独角兽,校招刚开,名额有限,先到先得,****最新动态,绿灯直达,免笔试~
我的秋招日记
点赞 评论 收藏
分享
10-11 14:44
济南大学 Java
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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