二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度

二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度

ID:39393743

大小:16.31 KB

页数:14页

时间:2019-07-02

二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度_第1页
二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度_第2页
二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度_第3页
二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度_第4页
二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度_第5页
资源描述:

《二叉树地建立与先序中序后序遍历 求叶子节点个数 求分支节点个数 求二叉树地高度》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准/*一下总结一些二叉树的常见操作:包括建立二叉树先/中/后序遍历二叉树求二叉树的叶子节点个数求二叉树的单分支节点个数计算二叉树双分支节点个数计算二叉树的高度计算二叉树的所有叶子节点数*/#include//c语言的头文件#include//c语言的头文件stdlib.h千万别写错了#defineMaxsize100/*创建二叉树的节点*/typedefstructBTNode//结构体struct是关键字不能省略结构体名字可以省略(为无名结构体)//成员类型可以是基本型或者构

2、造形,最后的为结构体变量。{chardata;structBTNode*lchild,*rchild;}*Bitree;/*使用先序建立二叉树*/BitreeCreatetree()//树的建立{charch;BitreeT;ch=getchar();//输入一个二叉树数据if(ch=='')//''中间有一个空格的。T=NULL;else{T=(Bitree)malloc(sizeof(Bitree));//生成二叉树(分配类型*)malloc(分配元素个数文档大全实用标准*sizeof(分配类型))T->data=c

3、h;T->lchild=Createtree();//递归创建左子树T->rchild=Createtree();//地柜创建右子树}returnT;//返回根节点}/*下面先序遍历二叉树*//*voidpreorder(BitreeT)//先序遍历{if(T){printf("%c-",T->data);preorder(T->lchild);preorder(T->rchild);}}*//*下面先序遍历二叉树非递归算法设计*/voidpreorder(BitreeT)//先序遍历非递归算法设计{文档大全实用标准Bi

4、treest[Maxsize];//定义循环队列存放节点的指针Bitreep;inttop=-1;//栈置空if(T){top++;st[top]=T;//根节点进栈while(top>-1)//栈不空时循环{p=st[top];//栈顶指针出栈top--;printf("%c-",p->data);if(p->rchild!=NULL)//右孩子存在进栈{top++;st[top]=p->rchild;}if(p->lchild!=NULL)//左孩子存在进栈{top++;st[top]=p->lchild;}}pri

5、ntf("");}}文档大全实用标准/*下面中序遍历二叉树*//*voidinorder(BitreeT)//中序遍历{if(T){inorder(T->lchild);printf("%c-",T->data);inorder(T->rchild);}}*//*下面中序遍历二叉树非递归算法设计*/voidinorder(BitreeT)//中序遍历{Bitreest[Maxsize];//定义循环队列,存放节点的指针Bitreep;文档大全实用标准inttop=-1;if(T){p=T;while(top>-1

6、

7、

8、p!=NULL)//栈不空或者*不空是循环{while(p!=NULL)//扫描*p的所有左孩子并进栈{top++;st[top]=p;p=p->lchild;}if(top>-1){p=st[top];//出栈*p节点,它没有右孩子或右孩子已被访问。top--;printf("%c-",p->data);//访问p=p->rchild;//扫描*p的右孩子节点}}printf("");}}文档大全实用标准/*下面后序遍历二叉树*//*voidpostorder(BitreeT)//后序遍历{if(T){postor

9、der(T->lchild);postorder(T->rchild);printf("%c-",T->data);}}*//*二叉树后序遍历非递归算法设计*/voidpostorder(BitreeT)//后序遍历非递归{Bitreest[Maxsize];Bitreep=T,q;intflag;//作为一个标志处理栈定时候用inttop=-1;//栈置空if(T){文档大全实用标准do{while(p)//将*p所在的左节点进栈{top++;st[top]=p;p=p->lchild;}q=NULL;flag=1;/

10、/设置flag=1表示处理栈顶节点while(top!=-1&&flag==1){p=st[top];if(p->rchild==q)//右孩子不存在或者右孩子已被访问,访问之{printf("%c-",p->data);top--;q=p;//让q指向刚被访问的节点}else{p=p->rchild;//p指向右孩

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

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

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