用C++ 6.0编写二叉法 用红色标出来的地方不知道怎么写?帮帮忙
#include <stdio.h>#include <malloc.h>
#include <conio.h>
#include <stdlib.h>
/********************************************************/
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define N 10
#define MAXSIZE 50
#define TRUE 1
#define FALSE 0
typedef char ElemType; //数据类型
typedef int Status; //返回值类型
/********************************************************/
typedef struct BiTNode{
ElemType data;
struct BiTNode *lChild;
struct BiTNode *rChild;
}BiTNode, *BiTree;
/********************************************************/
/********************************************************/
//队列的定义
typedef BiTree QueueElementType;
typedef struct
{
QueueElementType element[MAXSIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q)
{
Q->front = Q->rear = 0;
}
int EnterQueue(SeqQueue *Q,QueueElementType x)
{
if((Q->rear+1)%MAXSIZE ==Q->front)
{
return(FALSE);
}
Q->element[Q->rear] = x;
Q->rear = (Q->rear+1)%MAXSIZE;
return (TRUE);
}
int IsEmpty(SeqQueue Q)
{
if (Q.front==Q.rear)
{
return 1;
}
else
return 0;
}
int DeleteQueue(SeqQueue *Q,QueueElementType *x)
{
if(Q->front == Q->rear)
return(FALSE);
*x =Q->element[Q->front];
Q->front = (Q->front+1)%MAXSIZE;
return(TRUE);
}
int GetHead(SeqQueue Q,QueueElementType *x)
{
if(Q.front == Q.rear)
return(FALSE);
*x =Q.element[Q.front];
return(TRUE);
}//队列定义结束
/****************************************************/
//先序创建二叉树
Status CreateBiTree(BiTree *T)
{
return OK;
}
/********************************************************/
//先序遍历二叉树
void TraverseBiTree(BiTree T)
{
if (NULL == T)
return ;
printf("%c ", T->data);
TraverseBiTree(T->lChild);
TraverseBiTree(T->rChild);
}
//中序遍历二叉树
void InOrder(BiTree T)
{
if (NULL == T)
return ;
InOrder(T->lChild);
printf("%c ", T->data);
InOrder(T->rChild);
}
//后序遍历二叉树
void PostOrder(BiTree T)
{
if (NULL == T)
return ;
PostOrder(T->lChild);
PostOrder(T->rChild);
printf("%c ", T->data);
}
/***********************************************************/
//凹入表表示法输出二叉树
/*void DispBiTree_into(BiTree T, int i)
{
if(T==NULL)return;
PrintTree(T->pRight,i+1);
for(int n=0;n<i;n++)
printf("");
printf("%c\n", T->ch);
PrintfTree(T->pLeft,i+1);
}*/
/********************************************************/
//二叉树的输出嵌套括号表示法
void DispBiTree(BiTree T)
{
if (NULL != T)
{
printf("%c", T->data);
if (T->lChild!=NULL || T->rChild!=NULL)
{
printf("(");
DispBiTree(T->lChild);
if (NULL != T->rChild)
printf(",");
DispBiTree(T->rChild);
printf(")");
}
}
}
/********************************************/
/********************************************************/
//查找结点 如果找到就返回指向该结点的指针 否则返回NULL
BiTree locate(BiTree T, ElemType e)
{
}
/********************************************************/
//统计树中结点的个数
int leaf(BiTree T)
{
int LeafCount;
if(T==NULL)
LeafCount=0;
else if((T->lChild==NULL)&&(T->rChild==NULL))
LeafCount=1;
else
LeafCount=leaf(T->lChild)+leaf(T->rChild);
return LeafCount;
//现算法
}
/********************************************************/
//求二叉树的高度
int depth(BiTree T)
{
//实现求高度算法
}
void levelCount(BiTree t,int l,int num[])
{ //求二叉树的层数
}
/********************************************************/
void main(void)
{
BiTree T;
BiTree p;
int num[]={0};
CreateBiTree(&T);
levelCount(T,1,num);
int height=depth(T);
for(i=1;i<=height;i++)
printf("第%d层个数:%d\n",i,num[i]);
DispBiTree_into(T, 0);
p = locate(T, 'c');
if (p)
{
printf("\n\n%c\n", p->data);
}
getchar();
}