欢迎来到天天文库
浏览记录
ID:38199917
大小:33.50 KB
页数:4页
时间:2019-05-25
《求二叉树的树深、叶子节点数以及交换其左右子树》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include"stdio.h"#include"stdlib.h"#defineERROR0#defineTRUE1#defineOK1#defineNULL0#defineOVERFLOW-1#defineSTACK_INIT_SIZE100#defineStackIncrement10#defineSelemtypeBiTreetypedefintStatus;typedefstructBiTNode{//二叉树的二叉链表存储结构chardata;structBiTNodelchild,rc
2、hild;}BiTNode,BiTree;StatusPrintElement(chare){//输出函数printf("%c",e);returnOK;}//PrintElementBiTreeCreateBiTree(BiTree&T){//按先序序列建立一个二叉树charch;scanf("%c",&ch);if(ch=='#')T=NULL;else{if(!(T=(BiTNode)malloc(sizeof(BiTNode))))exit(OVERFLOW);T->data=ch;Crea
3、teBiTree(T->lchild);CreateBiTree(T->rchild);}returnT;}//CreateBiTreeStatusPreOrderTraverse(BiTreeT){//先序遍历二叉树的递归运算(1)if(T){printf("%ch",T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}elsereturnOK;}//PreOrderTraverseStatusPostOrderTra
4、verse(BiTreeT){//后序遍历二叉树的递归运算if(T){PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);printf("%ch",T->data);}elsereturnOK;}//PostOrderTraverseintLeafCount(BiTreeT){//二叉树中叶子节点的数目if(!T)return0;elseif(!T->lchild&&!T->rchild)return1;elsereturn(LeafC
5、ount(T->lchild)+LeafCount(T->rchild));}//LeafCountStatusBtDepth(BiTreeT){//求数的深度(1)intleftdep,rightdep;if(T==NULL)returnERROR;else{leftdep=BtDepth(T->lchild);rightdep=BtDepth(T->rchild);if(leftdep>rightdep)return(leftdep+1);elsereturn(rightdep+1);}}//B
6、tDepthintheight(BiTreeT){//求树的深度(2)intm,n;if(T==NULL)returnERROR;else{m=height(T->lchild);n=height(T->rchild);return(m>n)?m+1:n+1;}}voidRevolute(BiTreeT){//交换左右子树BiTreetem;tem=T->lchild;T->lchild=T->rchild;T->rchild=tem;}voidmain(){BiTreeT=NULL;//intn;
7、printf("请按次序输入字符:");T=CreateBiTree(T);printf("TheCreatementisasuccess!");printf("递归的先序遍历的结果为:");PreOrderTraverse(T);printf("");printf("树的叶子数目为:");LeafCount(T);printf("%d");printf("树的深度为:");BtDepth(T);printf("%d");//另一种方法:printf("%d",height(T)
8、);Revolute(T);printf("交换左右子树后递归的先序遍历的结果为:");PreOrderTraverse(T);printf("");}/输入二叉树的节点元素为:abc##de#g##f###运行结果:递归的线序遍历结果为:abcdegf树的叶子数目为:3树的深度位:5交换左右子树后递归的先序遍历结果位:abdfegc/五、运行结果如输入二叉树的节点元素为:abc##de#g##f###运行结果:递归的线序遍历结果为:abcdegf树的叶子数目
此文档下载收益归作者所有