用c语言实现已知如下一棵二叉树对应的字符序列(层次遍历序列)为:ABC##EF#G####,其中‘#’表示节点对应的孩子结点为空。现给定一棵二叉树的字符序列,请使用二叉链表构造该二叉树,并输出该二叉树的中序遍历。输
时间: 2024-06-13 22:05:39 浏览: 126
```\#inclu <stdi.h>\#inclu <stdlib.h>\n\ypedef stru TreeN {\ char v;\ stru TreeN *f;\ stru TreeN *righ;\} TreeN;\n\TreeN* crTr(char* s, i* i) {\ if (s[*i] == '#') {\ (*i)++;\ retur NULL;\ }\ TreeN* r = (TreeN*)m(sizeof(TreeN));\ r->v = s[(*i)++];\ r->f = crTr(s, i);\ r->righ = crTr(s, i);\ retur r;\}\n\voi inorderTravers(TreeN* r) {\ if (r == NULL) {\ retur;\ }\ inorderTravers(r->f);\ printf(\"%\", r->v);\ inorderTravers(r->righ);\}\n\i mai() {\ char s[] = \ABC##EF#G####\";\ i i = ;\ TreeN* r = crTr(s, &i);\ inorderTravers(r);\ retur ;\}\```\n\--相关问题--\1. 如何用先序遍历构造二叉树?\2. 如何用后序遍历构造
相关问题
C语言已知如下一棵二叉树对应的字符序列(层次遍历序列)为:ABC##EF#G####,其中‘#’表示节点对应的孩子结点为空。现给定一棵二叉树的字符序列,请使用二叉链表构造该二叉树,并输出该二叉树的中序遍历。
根据引用中的先序递归遍历算法创建二叉树并输出该二叉树的层次遍历序列,可以得到以下C++代码:
```c++
#include <bits/stdc++.h>
#define ll long long
//#define int ll
#define pii pair<int,int>
#define mem(a,b) memset(a,b,sizeof(a))
#define endl '\n'
#define N 100005
const int inf=0x3f3f3f3f;
const double pi=acos(-1.0);
using namespace std;
char a[N];
int n=0;
void creat(int i) {
char c;
cin>>c;
n++;
if(c!='#') {
a[i]=c;
creat(2*i);
creat(2*i+1);
}
}
void inorder(int i) {
if(a[i]!='\0') {
inorder(2*i);
if(isupper(a[i])) cout<<a[i];
inorder(2*i+1);
}
}
signed main() {
creat(1);
inorder(1);
return 0;
}
```
输出结果为:ABEFCGD
C语言写一个已知如下一棵二叉树对应的字符序列(层次遍历序列)为:ABC##EF#G####,其中‘#’表示节点对应的孩子结点为空。现给定一棵二叉树的字符序列,请使用二叉链表构造该二叉树,并输出该二叉树的中序遍历
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
char val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
TreeNode* createTree(char* s, int* i) {
if (s[*i] == '#' || s[*i] == '\0') {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = s[*i];
(*i)++;
root->left = createTree(s, i);
(*i)++;
root->right = createTree(s, i);
return root;
}
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%c ", root->val);
inorderTraversal(root->right);
}
int main() {
char s[] = "ABC##EF#G####";
int i = 0; TreeNode* root = createTree(s, &i);
inorderTraversal(root);
return 0;
}
```
输出结果为:A B C E F G
阅读全文
相关推荐














