include
include
define OVERFLOW -1
define OK 1
define NULL 0
typedef char ElemType;
typedef int Status;
typedef struct BiTNode {
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
Status CreateBiTree(BiTree &T);
void InOrderTraverse(BiTree &T);
void PostOrder(BiTree &T);
void PreOrder(BiTree &T);
Status TreeDepth(BiTree &T);
Status NumberOfNode(BiTree &T);
int main() {
BiTree T;
printf(“please enter some char :”);
CreateBiTree(T);
printf(“\nThe result of inordorTraverse is :”);
InOrderTraverse(T);
printf(“\nThe result of postordorTraverse is :”);
PostOrder(T);
printf(“\nThe result of preordorTraverse is :”);
PreOrder(T);
int depth = TreeDepth(T);
printf("\nThe depth of the tree is :%d", depth);
int number = NumberOfNode(T);
printf("\nThe number of the node is :%d ", number);
}
Status CreateBiTree(BiTree &T) {
char ch;
scanf_s("%c", &ch);
if (ch == '#')T = NULL;
else {
if (!(T = (BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW);
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}//创建二叉树
void InOrderTraverse(BiTree &T) {
if (T) {
InOrderTraverse(T->lchild);
printf("%c", T->data);
InOrderTraverse(T->rchild);
}
}//中序遍历
void PostOrder(BiTree &T) {
if (T) {
InOrderTraverse(T->lchild);
InOrderTraverse(T->rchild);
printf(“%c”, T->data);
}
}//后序遍历
void PreOrder(BiTree &T) {
if (T) {
printf(“%c”, T->data);
InOrderTraverse(T->lchild);
InOrderTraverse(T->rchild);
}
}//先序遍历
Status TreeDepth(BiTree &T) {
int ldepth, rdepth;
if (!T)return 0;
ldepth = TreeDepth(T->lchild);
rdepth = TreeDepth(T->rchild);
if (ldepth >= rdepth)return ldepth + 1;
else return rdepth + 1;
}//树的深度
Status NumberOfNode(BiTree &T) {
int number,number1,number2;
if (!T)return 0;
else return NumberOfNode(T->lchild) + NumberOfNode(T->rchild) + 1;
}//树的节点检测