中易网

求编一个c代码,输入满二叉树的先序遍历,输出中序遍历和后序遍历

答案:2  悬赏:70  
解决时间 2021-02-16 19:33
注意是满二叉树。
最佳答案
在淘宝搜快客利,认准店主sinohzxu,官方自助话费充值

#include <stdio.h>
#include <string.h>
#include <math.h>
#define NULL 0
typedef struct btree
{
char data;
struct btree *pLeft;
struct btree *pRight;
}quickli;

quickli* constuctTree(char input[], int beginIndex, int endIndex)
{
if (beginIndex > endIndex) return NULL;
quickli* root=(quickli *)malloc(sizeof(quickli));
root->data=input[beginIndex];
root->pLeft=constuctTree(input , beginIndex+1,(endIndex+beginIndex)/2);
root->pRight=constuctTree(input , (endIndex+beginIndex)/2+1,endIndex);
return root;
}

void inorderTree(quickli* tree)
{
if (tree == NULL) return ;
inorderTree(tree->pLeft);
printf("%c",tree->data);
inorderTree(tree->pRight);
}

void postorderTree(quickli* tree)
{
if (tree == NULL) return ;
postorderTree(tree->pLeft);
postorderTree(tree->pRight);
printf("%c",tree->data);
}

int main()
{
printf("请输入一个满二叉树先序遍历(如ABCDEFG):\n");
char input[100];
scanf("%s",input);
double check = log(strlen(input)+1)/log(2);
if(check != (int)check)
{
printf("错误:满二叉树的序列长度必须等于2^n-1(^是幂的意思)\n");
return -1;
}
quickli* tree=constuctTree(input,0,strlen(input)-1);
printf("中序遍历如下:\n");
inorderTree(tree);
printf("\n");
printf("后序遍历如下:\n");
postorderTree(tree);
printf("\n");
return 0;
}

在淘宝搜快客利,认准店主sinohzxu,官方自助话费充值
全部回答
#define el 10 #define tel 2*el+1 #define len sizeof(struct node) #include "stdio.h" #include "stdlib.h" char pre[tel]="abcdefghij"; char pin[tel]="cbedaghfji"; typedef struct node { char data; struct node * lch,*rch; }btnode,*btree; btnode root; btree rt=&root; int pos(char c,char s[],int st) {char *p; p=s+st; while(*p!=c && *p!='\0') p++; return p-s; } void create(btree *t,int i1,int i2,int len) {int r,llen,rlen; if(len<=0) *t=null; else {*t=(btree)malloc(len); (*t)->data=pre[i1]; r=pos(pre[i1],pin,i2); llen=r-i2; rlen=len-(llen+1); create(&(*t)->lch,i1+1,i2,llen); create(&(*t)->rch,i1+llen+1,r+1,rlen); } } void travel(btree t) {if(t) {travel(t->lch); travel(t->rch); putchar(t->data); } } int main() {create(&rt,0,0,el); if(rt) travel(rt); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
越战中中国女兵遭到怎样的摧残
2015 8 13 风云音乐 炫动亚洲下午节目表
仁和薇滋润能治痘痘吗
连云港市自来水公司新海管线所这个地址在什么
彩托是怎么回事
女友因为要考研,说两个月内不要联系,电话短
请问连云港的佳能维修点在那里
牯牛降风景区停车场这个地址在什么地方,我要
谈公社区解放三村西门这个地址在什么地方,我
永康客运东站到石柱下里溪工业区怎么坐车
A杖对小小有什么用?
紫薇花园西门怎么去啊,有知道地址的么
豆腐眼里出西施?!
vivo s9不小心弄成听筒模式怎么改回去,急
德阳羽毛球馆地址在哪,我要去那里办事
推荐资讯
锦兰茶业地址在什么地方,想过去办事
在南京李顺昌订做一套西装(上衣+裤子)大概
无音沟地址有知道的么?有点事想过去
为什么先进先出(FIFO)营运资本高,后进先出
国标常用三蕊电线分哪几种颜色?
建行网上银行注销
如果派出所办户籍的人20天不上班,老百姓要办
蜿字可以组什么词(除了蜿蜒)
建设银行南航信用卡白色的是白金卡吗
国内是不是还有很多地方没升级8位的电话号码
芋头吃多了会不会上火呢?
69年7月9日出生是什么星座
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?