牛客网 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;
}

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

目录
相关文章
|
7月前
codeforces 272C. Dima and Staircase(线段树)
题目很长,看加猜加谷歌翻译才看懂了题目。每级台阶的宽都是1,但高不同,并且告诉你了,然后给你m个箱子,长和宽都告诉你,把箱子靠左放,求箱子的底部有多高。
18 0
|
6天前
|
算法 测试技术
每日一题:LeetCode-LCR 007. 三数之和
每日一题:LeetCode-LCR 007. 三数之和
|
7月前
|
存储
【Leetcode -563.二叉树的坡度 - Nowcoder -KY11.二叉树遍历】
【Leetcode -563.二叉树的坡度 - Nowcoder -KY11.二叉树遍历】
29 0
|
7月前
华为机试HJ44:Sudoku(数独问题,深度优先遍历DFS解法)
华为机试HJ44:Sudoku(数独问题,深度优先遍历DFS解法)
NowCoder | KY11 二叉树遍历
NowCoder | KY11 二叉树遍历
|
6天前
牛客网-重建二叉树
牛客网-重建二叉树
23 0
|
7月前
poj 1990 MooFest 树状数组
题意就是有N头牛,每头牛都有一个坐标和声调值(x, v),两头牛之间通讯要花费的能量是他们的距离乘以最大的一个音调值,现在要任意两头牛之间都相互通讯一次,求总共需要花费多少能量?
22 0
|
7月前
|
存储 算法 C++
剑指offer(C++)-JZ69:跳台阶(算法-动态规划)
剑指offer(C++)-JZ69:跳台阶(算法-动态规划)
|
机器学习/深度学习
棋盘问题 POJ 1321
总时间限制:  1000ms 内存限制:  65536kB 描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。
1146 0
|
人工智能 网络架构