二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等

上传人:油条 文档编号:14848400 上传时间:2017-11-02 格式:DOC 页数:4 大小:36KB
返回 下载 相关 举报
二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等_第1页
第1页 / 共4页
二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等_第2页
第2页 / 共4页
二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等_第3页
第3页 / 共4页
二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等》由会员分享,可在线阅读,更多相关《二叉树的递归建立、递归与非递归遍历,就高、求叶子节点等(4页珍藏版)》请在金锄头文库上搜索。

1、#include#include#include#define MAX_TREE_SIZE 100#define elemtype char#define STACK_INIT_SIZE 100#define STACK_INCREMENT 10/*二叉树定义*/typedef struct Telemtype data;struct T *lchild,*rchild;Bitree,*Qtree;/*栈的结构*/typedef structQtree *base;Qtree *top;int stacksize;Stack,* qstack;int Init(qstack S)/*构造空栈

2、*/S-base=(Qtree *)malloc(STACK_INIT_SIZE*sizeof(Qtree);if(!S-base)exit(1);S-top=S-base;S-stacksize=STACK_INIT_SIZE;return 1;int Stackempty(Stack S)/*判断栈空 */if(S.top=S.base)return 1;elsereturn 0;int Push(qstack S,Qtree e)/*插入元素 */if(S-top-S-base=S-stacksize)/*栈满*/return 0;else *S-top+=e;return 0;int

3、GetTop(Stack S,Qtree *e)/*得到栈顶元素*/if(S.top=S.base)return 0;*e=*(S.top-1);return 1;int Pop(qstack S,Qtree *e)/*弹出栈顶元素*/if(S-top=S-base)return 0;else*e=*-S-top;return 1;Qtree CreateTree()/*递归先序建树*/Qtree T;char ch;printf(please inputn);scanf(%c,&ch);fflush(stdin);/*清空缓存*/if(ch=#)return NULL;T=(Qtree)ma

4、lloc(sizeof(Bitree);T-data=ch;T-lchild=CreateTree();T-rchild=CreateTree();return T;int preOrderTraverse(Qtree T)/*先序递归遍历*/char e;if(!T)return 0;printf(%c ,T-data);preOrderTraverse(T-lchild);preOrderTraverse(T-rchild);return 1;int High(Qtree T)/*求树高 */if(!T)return 0;return(Max(High(T-lchild),High(T-r

5、child)+1);int Node(Qtree T)/*求所有节点*/if(!T)return 0;return(Leeaf(T-lchild)+Leeaf(T-rchild)+1);int Leeaf(Qtree T)/*求叶子节点*/if(T-lchild=NULL &T-rchild=NULL)return 1;return(Leeaf(T-lchild)+Leeaf(T-rchild);int Max(int a,int b)if(ab)return a;elsereturn b;void NRinorder(Qtree T)/*非递归中序遍历*/Qtree p;Stack S;In

6、it(&S); Push(&S,T);/* printf(#); */while(!Stackempty(S)/* printf(#); */while(GetTop(S,&p)&p)/* printf(%c# ,p-data); */Push(&S,p-lchild);Pop(&S,&p);if(!Stackempty(S)Pop(&S,&p);printf(%c ,p-data);Push(&S,p-rchild); int Visit(elemtype e)printf(%c ,e);void main()Qtree T;T=CreateTree();preOrderTraverse(T);printf(nthis trees high is %dn,High(T);NRinorder(T);printf(nthis thee has %d leeafn,Leeaf(T);getch();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号