0
点赞
收藏
分享

微信扫一扫

FPGA协议篇:UART通信及Verilog最易懂实现方式/通用于任何工程/带握手信号 ----UART_TX

七公子706 03-19 10:30 阅读 2

这一题很多人其实连题目都没有读懂到底是什么意思?它是要我们表达什么,或者是要我们干什么。其实它就是说给我们一组字符串,然后要我们把这个字符串先构建成一个二叉树,然后在把这个二叉数用中序遍历来输出结果就可以了。

我们一步一步的来解决这个问题

一.初始化

我们先要有个大局观,先把主函数写了,先把一个主要的思路完成,这个题目我们的思路就是

int main() {
  char str[100];//创建字符数组
  scanf("%s",str);
  int i=0;
  TNode*root=CreateTree(str,&i);将字符数据变成二叉树
  Inorder(root);中序遍历
    return 0;
}

当然我们还需要先初始化一个二叉树

typedef struct TreeNode
{
    struct TreeNode* left;
    struct TreeNode* right;
    char val;
}TNode;

二.创建二叉树

首先先把char*a,int*pi传过去,一个是数组名,一个是下标

if(a[*pi]=='#')
  {
    (*pi)++;
    return NULL;
  }
TNode*root=( TNode*)malloc(sizeof(TNode));
     if(root==NULL)
     {
        printf("mallco fail\n");
        exit(-1);
     }
     root->val=a[*pi];
     (*pi)++;
     root->left=CreateTree(a,pi);
     root->right=CreateTree(a,pi);

整体

TNode*CreateTree(char*a,int*pi)
{
  if(a[*pi]=='#')
  {
    (*pi)++;
    return NULL;
  }
     TNode*root=( TNode*)malloc(sizeof(TNode));
     if(root==NULL)
     {
        printf("mallco fail\n");
        exit(-1);
     }
     root->val=a[*pi];
     (*pi)++;
     root->left=CreateTree(a,pi);
     root->right=CreateTree(a,pi);
     return root;
}

三.中序遍历

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

}

总结

然后就结束了

我认为这个题目难就难在创建二叉树,和题目的意思,只有意思理解了就好做了

举报
0 条评论