这段代码是一个二叉树的基本操作实现。以下是对应的补充代码:
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateBiTree(BiTree &T)
{
char ch;
scanf("%c", &ch);
if (ch == '#')
T = NULL;
else
{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrderTraverse(BiTree T)
{
if (T)
{
printf("%c ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiTree T)
{
if (T)
{
InOrderTraverse(T->lchild);
printf("%c ", T->data);
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree T)
{
if (T)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ", T->data);
}
}
int BTDepth(BiTree T)
{
if (T == NULL)
return 0;
int leftDepth = BTDepth(T->lchild);
int rightDepth = BTDepth(T->rchild);
return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}
void Leaf(BiTree T)
{
if (T != NULL)
{
if (T->lchild == NULL && T->rchild == NULL)
LEAFCOUNT++;
Leaf(T->lchild);
Leaf(T->rchild);
}
}
void NodeCount(BiTree T)
{
if (T != NULL)
{
NODECOUNT++;
NodeCount(T->lchild);
NodeCount(T->rchild);
}
}
此外,还需要注意在main()
函数中对应的调用和输入处理。
内容由零声教学AI助手提供,问题来源于学员提问