请教一道C语言的数据结构题目

1. 实现二叉树的创建三种递归遍历算法
/*实现二叉树的三种递归遍历算法*/
#include"head.h"
#include "stdio.h"
#include "stdlib.h"

typedef char TElemType;

typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

Status PrintElement(TElemType e)
{
printf("%c",e);
return OK;
}

Status CreateBiTree(BiTree *T)
{
TElemType ch;
scanf("%c",&ch);
if(ch==' ') *T=NULL;
else
{
*T=(BiTNode *)malloc(sizeof(BiTNode));
if(!*T) exit(OVERFLOW);
_____________________________________
_____________________________________
_____________________________________
}
return OK;
}

Status PreOrderTraverse(BiTree T,Status(* Visit)(TElemType))
{
if(T){
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit)) return OK;
return ERROR;
}else return OK;
}

Status InOrderTraverse(BiTree T,Status(* Visit)(TElemType))
{
_____________________________________
_____________________________________
_____________________________________
_____________________________________
_____________________________________
_____________________________________

}

Status BackOrderTraverse(BiTree T,Status(* Visit)(TElemType))
{
_____________________________________
_____________________________________
_____________________________________
_____________________________________
_____________________________________
_____________________________________
}

void main()
{
BiTree T=NULL;
printf("建树\n");
CreateBiTree(&T);
printf("先序遍历\n");
PreOrderTraverse(T,PrintElement);
printf("\n");
printf("中序遍历\n");
InOrderTraverse(T,PrintElement);
printf("\n");
printf("后序遍历\n");
BackOrderTraverse(T,PrintElement);
}

Status CreateBiTree(BiTree *T)
{
TElemType ch;
scanf("%c",&ch);
if(ch==' ') *T=NULL;
else
{
*T=(BiTNode *)malloc(sizeof(BiTNode));
if(!*T) exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
Status InOrderTraverse(BiTree T,Status(* Visit)(TElemType))
{
if(T){
if(PreOrderTraverse(T->lchild,Visit));
if(Visit(T->data))
if(PreOrderTraverse(T->rchild,Visit)) return OK;
return ERROR;
}else return OK;
}
Status BackOrderTraverse(BiTree T,Status(* Visit)(TElemType))
{
if(T){
if(PreOrderTraverse(T->lchild,Visit));
if(PreOrderTraverse(T->rchild,Visit));
if(Visit(T->data))return OK;
return ERROR;
}else return OK;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

一道C语言里的数据结构问题
31+1\/n , 100n + nlog2(n), 20log2(2^n) + n^2, 2^n + 89n^3

数据结构c语言版一道题求解
include <stdio.h>#include <stdlib.h>typedef int DataType; struct SeqList{ int MAXNUM; \/* 顺序表中最大元素的个数*\/ int n; \/* 存放线性表中元素的个数n≤MAXNUM *\/ DataType *element; \/* element[0],element[1],…,element[n - 1]存放线性表中的元素 ...

求教一题数据结构(C语言),第5题
1+2+3+4+5+5=20 所以两者之差为19

C语言数据结构的一个基本问题
1 int read_2D_Array(int **array, int i, int j, int column)2 { \/\/i row j column ,总行数为column 3 return((*(int*)array + i*column + j));4 } 以上函数的参数第一行的int **array是函数参数这个参数说明该函数参数列表一接收的数据类型为int ** 型的变量 ...

关于数据结构的问题,用C语言描述
关于数据结构的问题,用C语言描述 60 1.设一函数f(x,y)=(1+A*(e^B\/cosθ)*(1+C*(cosψ)^2),其中θ=(π*x)\/180,ψ=(π*y)\/180,参数A=-0.5,B=-0.4,C=-0.1。x从0变化到89,步长为1,y从0变化到359,步长为1。采用一种数据结... 1. 设一函数 f(x,y)=(1+A*(e^B\/cosθ)*(1...

c语言数据结构问题求解
A[0][0]和A[2][2]相差了(2*n+2)个元素,与A[3][3]相差了(3*n+3)个元素,所以,676-644=32,32\/2*3=48,644+48=692,选择c项。满意请采纳呦~

关于数据结构(C语言版)的两个问题
如果为右括号`)`,则检查`stack`是否为空,如果不为空则弹出栈顶元素,将`top`减一。在遍历结束后,检查`stack`是否为空。如果为空,表示所有括号均匹配,返回1;否则表示存在未匹配的括号,返回0。通过上述程序,可以实现对给定字符串中括号匹配性的判断,对于数据结构(C语言版)中的括号匹配问题,...

C语言数据结构地址问题 很困惑,请知道的帮你分析下。题目如下,
行优先表示只有一行满了才开始存下一行 你这里面主要是首先计算数组中每个元素的内存 先计算a[2][3]和a[4][7]间有多少元素 显然有两行多4个元素 每行9个 所以共有2*9+4=22 它们的地址差为1153-1087=66 表示22元素共占内存66 一个占3 a[6][7]比a[4][7]多2*9=18元素 地址应该大...

一份C语言的数据结构题目,急求答案
第一题;Search (BiTree t,ElemType x){ struct nodee;{BiTree pp;int tag;}s[100];int top; Bitree p;top=0; p=t;while(p!=NULL&&p->p!=NULL){while(p!=NULL&&p->data!=x){top++;s[top].pp=p;s[top].tag=0;p=p->lchild;} if(p!=NULL&&p->data==x){for(i=1...

相似回答