题解 | #二叉树遍历#

二叉树遍历

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 山东

相关推荐

循此苦旅:月初笔试全a,没面试!
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务