求二叉树的树深、叶子节点数以及交换其左右子树

求二叉树的树深、叶子节点数以及交换其左右子树

ID:38199917

大小:33.50 KB

页数:4页

时间:2019-05-25

求二叉树的树深、叶子节点数以及交换其左右子树_第1页
求二叉树的树深、叶子节点数以及交换其左右子树_第2页
求二叉树的树深、叶子节点数以及交换其左右子树_第3页
求二叉树的树深、叶子节点数以及交换其左右子树_第4页
资源描述:

《求二叉树的树深、叶子节点数以及交换其左右子树》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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树的叶子数目

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。