求树的节点数和叶子C代码

上传人:宝路 文档编号:17616278 上传时间:2017-11-11 格式:DOC 页数:9 大小:36.74KB
返回 下载 相关 举报
求树的节点数和叶子C代码_第1页
第1页 / 共9页
求树的节点数和叶子C代码_第2页
第2页 / 共9页
求树的节点数和叶子C代码_第3页
第3页 / 共9页
求树的节点数和叶子C代码_第4页
第4页 / 共9页
求树的节点数和叶子C代码_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《求树的节点数和叶子C代码》由会员分享,可在线阅读,更多相关《求树的节点数和叶子C代码(9页珍藏版)》请在金锄头文库上搜索。

1、/求节点数#include#include#include#define TRUE 1#define FLASE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int TElemType;typedef struct BiTNodeTElemType data;struct BiTNode *lchild,*rchild; BiTNode,*BiTree;Status CreateBiTree(BiTree &T)TElemType e; scanf(

2、%d,&e);if(e=0) T=NULL;else T=(BiTree)malloc(sizeof(BiTNode);if(!T)exit(OVERFLOW);T-data =e;CreateBiTree(T-lchild );CreateBiTree(T-rchild );return OK;int BTNodeCount (BiTree T)int m=0,n=0;if(T=NULL)return 0;elsem=BTNodeCount(T-lchild ); n=BTNodeCount(T-rchild );return (m+n+1);void main()BiTree T;prin

3、tf(请输入二叉树中节点的值(int 型) ,0 表示空树:n);CreateBiTree(T);printf(该树的节点数是%dn,BTNodeCount(T);/求叶子数#include#include#include#define TRUE 1#define FLASE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int TElemType;typedef struct BiTNodeTElemType data;struct BiTNode

4、*lchild,*rchild; BiTNode,*BiTree;Status CreateBiTree(BiTree &T)TElemType e;scanf(%d,&e);if(e=0) T=NULL;else T=(BiTree)malloc(sizeof(BiTNode);if(!T)exit(OVERFLOW);T-data =e;CreateBiTree(T-lchild ); CreateBiTree(T-rchild );return OK;int LeftBiTree(BiTree T)int m,n;if(!T)return 0;else if(!T-lchild &!T-

5、rchild )return 1;elsem=LeftBiTree(T-lchild );n=LeftBiTree(T-rchild );return (m+n);void main()BiTree T;printf(请输入树中节点的值(int 型) ,0 表示空树:n);CreateBiTree(T);printf(该二叉树的树叶是%dn,LeftBiTree(T);如果需要两个程序合并,自己修改一下就可以了#include#includetypedef char ElemType ;#includeBiTree.htypedef BiTreeNode* DataType;#includeL

6、inQueue.hvoid LeverOrder(BiTreeNode * root) /层序遍历的函数,形参是一个二叉树的头指针,如果该二叉树有头结点则为其头结点的左子树 int m=0,n=0; /m为叶子节点的计数器,n 为总节点BiTreeNode *q;LQueue head; /创建一个队列,用以存放二叉树的结点地址QueueInitiate(&head); /初始化队列QueueAppend(&head, root); /二叉树第一个有用结点入队列while(QueueNotEmpty(head)QueueDelete(&head,&q);printf(%c ,q-data);n

7、+; /输出一个结点就进行一次计数,总计为总结点数目if(q-leftChild!=NULL) QueueAppend(&head, q-leftChild);if(q-rightChild!=NULL) QueueAppend(&head, q-rightChild);if(q-leftChild=NULL&q-rightChild=NULL) m+; /叶子节点为没有子树的结点,利用这个特点进行筛选printf(n);printf(总结点数目为:%dn,n);printf(叶子节点数目为:%dn,m);void main()BiTreeNode *root, *p, *pp;Initiate(&root);p = InsertLeftNode(root, A);p = InsertLeftNode(p, B);p = InsertLeftNode(p, D);p = InsertRightNode(p, G);p = InsertRightNode(root-leftChild, C);pp = p;InsertLeftNode(p, E);InsertRightNode(pp, F); LeverOrder(root-leftChild);Destroy(&root);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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