#include#include typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //先序遍历 void PreOrder(BiTree t){ if(t!=NULL){ printf("%c ",t->data);//访问根节点 PreOrder(t->lchild); //访问左节点 PreOrder(t->rchild); //访问右节点 } } //中序遍历 void InOrder(BiTree t){ if(t!=NULL){ InOrder(t->lchild); //访问左节点 printf("%c ",t->data);//访问根节点 InOrder(t->rchild); //访问右节点 } } //后序遍历 void PostOrder(BiTree t){ if(t!=NULL){ PostOrder(t->lchild); //访问左节点 PostOrder(t->rchild); //访问右节点 printf("%c ",t->data);//访问根节点 } } //统计二叉树节点的总数目 int BiTreeLength(BiTree root) { if(root==NULL) return 0; return 1+BiTreeLength(root->lchild) + BiTreeLength(root->rchild); } //初始化树节点 void InitBiTree(BiTree &root){ root=(BiTree)malloc(sizeof(BiTNode)); root->data={'A'}; root->lchild=root->rchild=NULL; BiTNode *p1=(BiTNode *)malloc(sizeof(BiTNode)); p1->data={'B'}; p1->lchild=p1->rchild=NULL; root->lchild=p1; BiTNode *p2=(BiTNode *)malloc(sizeof(BiTNode)); p2->data={'C'}; p2->lchild=p2->rchild=NULL; root->rchild=p2; BiTNode *p3=(BiTNode *)malloc(sizeof(BiTNode)); p3->data={'D'}; p3->lchild=p3->rchild=NULL; p1->lchild=p3; BiTNode *p4=(BiTNode *)malloc(sizeof(BiTNode)); p4->data={'E'}; p4->lchild=p4->rchild=NULL; p1->rchild=p4; BiTNode *p5=(BiTNode *)malloc(sizeof(BiTNode)); p5->data={'F'}; p5->lchild=p5->rchild=NULL; p2->lchild=p5; BiTNode *p6=(BiTNode *)malloc(sizeof(BiTNode)); p6->data={'G'}; p6->lchild=p6->rchild=NULL; p2->rchild=p6; } int main(){ BiTree root=NULL; InitBiTree(root); PreOrder(root); printf("n"); InOrder(root); printf("n"); PostOrder(root); printf("n"); int cnt=BiTreeLength(root); printf("二叉树的结点数为:%dn",cnt); return 0; }



