试验六、树和二叉树的操作一、试验目的1.深入掌握树的构造及非线性特点,递归特点和动态性。2.深入巩固对指针的使用和二叉树的三种遍历措施、建立措施。二、试验内容二叉树的实现和运算三、试验规定1.用C++/C完毕算法设计和程序设计并上机调试通过。2.撰写试验汇报,提供试验成果和数据。3.分析算法,并简要给出算法设计小结和心得。四、程序实现#include#includetypedefcharDataType;typedefstructBitNode{DataTypedata;structBitNode*lchild,*rchild;}*BitTree;voidBinTreeInit(BitTree&BT)//初始化二叉树,即把树根指针置空{BT=(BitTree)malloc(sizeof(BitNode));BT->data=NULL;cout<<"二叉树初始化成功!"<>ch;if(ch=='#')BT=NULL;else{if(!(BT=(BitTree)malloc(sizeof(BitNode))))exit(0);BT->data=ch;BinTreeCreat(BT->lchild);BinTreeCreat(BT->rchild);}return0;//cout<<"按先序序列建立一种二叉树已经完毕!"<data==NULL)cout<<"是空二叉树!"<data;BinTraverse(BT->lchild);BinTraverse(BT->rchild);}}intBinTreeDepth(BitTreeBT)//求二叉树的深度{intdepthval;if(BT){intdepthLeft=BinTreeDepth(BT->lchild);intdepthRight=BinTreeDepth(BT->rchild);depthval=1+(depthLeft>depthRight?depthLeft:depthRight);}elsedepthval=0;returndepthval;}intBinTreeCount(BitTreeBT)//求二叉树中所有结点数{intnode;if(BT){intlchild=BinTreeCount(BT->lchild);intrchild=BinTreeCount(BT->rchild);node=lchild+rchild+1;}elsenode=0;returnnode;}voidmain(){inti;BitTreeBT;cout<<"1、初始化二叉树:"<<"\n2、按先序序列建立二叉树"<<"\n3、判断二叉树与否为空:";cout<<"\n4、先序序列遍历二叉树"<<"\n5、求二叉树的深度"<<"\n6、求二叉树节点的个数"<>i;if(i==1)BinTreeInit(BT);elseif(i==2){cout<<"输入你要建立的二叉树:"<