牛客网 KY11 二叉树遍历

简介: 牛客网 KY11 二叉树遍历

1.解题思路

该题需要提供两个接口,一个是根据前序构造二叉树的接口,一个是中序遍历接口

2.代码实现

2.1根据前序构造二叉树的接口

因为’#‘就代表空,所以如果遇到’#'时,直接返回即可.

struct BinaryNode* TreeCreate(char *a,int *i)
{
    if(a[*i]=='#')
    {
     (*i)++;
     return NULL;
    }
    struct BinaryNode*root=(struct BinaryNode*)malloc(sizeof(struct BinaryNode));
    root->val=a[*i];
    (*i)++;
    root->left=TreeCreate(a,i);
    root->right=TreeCreate(a,i);
    return root;
}

2.2中序遍历接口

void Inorder(struct BinaryNode*root)
{
   if(root==NULL)
   return;
   Inorder(root->left);
   printf("%c ",root->val);
   Inorder(root->right);
}

2.3总体代码

#include <stdio.h>
typedef struct BinaryNode
{
    char val;
    struct BinaryNode*left;
    struct BinaryNode*right;
}BT;
struct BinaryNode* TreeCreate(char *a,int *i)
{
    if(a[*i]=='#')
    {
     (*i)++;
     return NULL;
    }
    struct BinaryNode*root=(struct BinaryNode*)malloc(sizeof(struct BinaryNode));
    root->val=a[*i];
    (*i)++;
    root->left=TreeCreate(a,i);
    root->right=TreeCreate(a,i);
    return root;
}
void Inorder(struct BinaryNode*root)
{
   if(root==NULL)
   return;
   Inorder(root->left);
   printf("%c ",root->val);
   Inorder(root->right);
}
int main()
 {
  char a[101];
  gets(a);
   int pi=0;
  struct BinaryNode*root= TreeCreate(a,&pi);
  Inorder(root);
    return 0;
}

结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!

目录
相关文章
|
28天前
lanqiao OJ 689 四阶幻方
lanqiao OJ 689 四阶幻方
24 0
|
28天前
lanqiao OJ 1388 寒假作业
lanqiao OJ 1388 寒假作业
32 0
|
28天前
lanqiao OJ 108 发现环
lanqiao OJ 108 发现环
12 1
|
29天前
lanqiao OJ 389 摆花
lanqiao OJ 389 摆花
15 2
|
26天前
|
算法
lanqiao OJ 1366 spfa最短路
lanqiao OJ 1366 spfa最短路
21 0
|
25天前
lanqiao oj Frog
lanqiao oj Frog
20 0
|
26天前
lanqiao oj 1050 补给
lanqiao oj 1050 补给
34 0
|
26天前
lanqiao oj 1085 小猪存钱罐
lanqiao oj 1085 小猪存钱罐
25 0
|
26天前
lanqiao OJ 207 大臣的旅费(两次dfs)
lanqiao OJ 207 大臣的旅费(两次dfs)
10 0
|
28天前
lanqiao OJ 641 迷宫
lanqiao OJ 641 迷宫
27 0