0
点赞
收藏
分享

微信扫一扫

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

七公子706 2024-03-19 阅读 6

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

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

一.初始化

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

int main() {
char str[100];//创建字符数组
scanf("%s",str);
int i=0;
TNode*root=CreateTree(str,将字符数据变成二叉树
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 条评论