【牛客】二叉树遍历

题目

题目链接点击进入
在这里插入图片描述

解题过程

对示例1中的样例即:abc##de#g##f###进行先序遍历建立一个二叉树,建立完成之后就是这样的,如下图:
在这里插入图片描述
然后再将这颗树进行中序遍历进行最后的结果输出。
无非就是用递归嘛
整个题目的思路挺清晰的:先先序遍历建立一棵二叉树,然后再对这棵二叉树进行中序遍历输出其值。

解题代码

#include<stdio.h>
struct TreeNode
{
    
    
    struct TreeNode* left;
    struct TreeNode* right;
    char val;
};

//先序建立二叉树
struct TreeNode* CreateTree(char* a,int* pi)
{
    
    
    if(a[*pi]=='#')
    {
    
    
        (*pi)++;
        return NULL;
    }
    struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
    root->val=a[(*pi)++];
    root->left=CreateTree(a, pi);
    root->right=CreateTree(a, pi);
    return root;
}

//中序输出结果
void InOrder(struct TreeNode* root)
{
    
    
    if(root==NULL)
    {
    
    
        return;
    }
    InOrder(root->left);
    printf("%c ",root->val);
    InOrder(root->right);
}

int main()
{
    
    
    char a[100];
    scanf("%s",a);
    int i=0;
    struct TreeNode* root=CreateTree(a,&i);
    InOrder(root);
    return 0;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_74352571/article/details/130187135