/*调试环境VS2008、VC++6
0*//*关于二叉树的一些操作,包括二叉树的建立,输出,遍历*//*判断是否为完全二叉树,求二叉树的层数,求叶子结点数*/#include#include#include#defineMAX(x,y)(x)>(y)
(x):(y)typedefstructBiTNode{intdata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;BiTreeCreateBiTree(BiTreeT){//按先序次序输入二叉树中结点的值(int类型)//构造二叉链表表示的二叉树T,结点值为int型,表示空(子)树intnum;scanf("%d",&num);if(0==num)//空T=NULL;else{T=(BiTree)malloc(sizeof(BiTNode));if(
T)exit(0);T->data=num;//生成根结点printf("请输入结点%d的左子结点:",T->data);T->lchild=CreateBiTree(T->lchild);//构造左子树printf("请输入结点%d的右子结点:",T->data);T->rchild=CreateBiTree(T->rchild);//构造右子树}returnT;}voidPrintBiTree(BiTreeT){//先序遍历输出二叉树,其中NULL表示空结点//输出其嵌套括号表示格,即形如A(T1,T2),其中A为根结点,T1,T2分别为A的左子树和右子树if(T
=NULL){printf("%d",T->data);//若结点非空,输出结点的值if(T->lchild
=NULL||T->rchild
=NULL){printf("(");PrintBiTree(T->lchild);//判断左子树,非空则输出根结点的值