第十周项目3 利用二叉树遍历思想解决问题(3)
来源:互联网 发布:mac装win7鼠标不能动 编辑:程序博客网 时间:2024/06/02 04:23
问题与代码
/* *Copyright (c) 2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:head.h,main.cpp,zdy.cpp *作者:陈梦萍 *完成日期:2015年11月16日 *版本号:v1.0 * *问题描述: 求二叉树b的叶子节点个数 *输入描述:无 *程序输出:若干数据 */
//head.h
#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; //数据元素 struct node *lchild; //指向左孩子 struct node *rchild; //指向右孩子} BTNode;void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链void DestroyBTNode(BTNode *&b); //销毁二叉树int LeafNodes(BTNode *b);
//main.cpp
#include "head.h"int main(){ BTNode *b; CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"); printf("二叉树b的叶子节点个数: %d\n",LeafNodes(b)); DestroyBTNode(b); return 0;}
//zdy.cpp
#include"head.h"int LeafNodes(BTNode *b) //求二叉树b的叶子节点个数{ int num1,num2; if (b==NULL) return 0; else if (b->lchild==NULL && b->rchild==NULL) return 1; else { num1=LeafNodes(b->lchild); num2=LeafNodes(b->rchild); return (num1+num2); }}void CreateBTNode(BTNode *&b,char *str) //由str串创建二叉链{ BTNode *St[MaxSize],*p=NULL; int top=-1,k,j=0; char ch; b=NULL; //建立的二叉树初始时为空 ch=str[j]; while (ch!='\0') //str未扫描完时循环 { switch(ch) { case '(': top++; St[top]=p; k=1; break; //为左节点 case ')': top--; break; case ',': k=2; break; //为右节点 default: p=(BTNode *)malloc(sizeof(BTNode)); p->data=ch; p->lchild=p->rchild=NULL; if (b==NULL) //p指向二叉树的根节点 b=p; else //已建立二叉树根节点 { switch(k) { case 1: St[top]->lchild=p; break; case 2: St[top]->rchild=p; break; } } } j++; ch=str[j]; }}void DestroyBTNode(BTNode *&b) //销毁二叉树{ if (b!=NULL) { DestroyBTNode(b->lchild); DestroyBTNode(b->rchild); free(b); }}
运行结果
知识点总结
遍历左子树,若当前节点的孩子节点为空就返回1,再遍历右子树,最后将左子树中的叶子节点数和右子树中叶子节点数相加,即可得出二叉树叶子节点的个数。
0 0
- 第十周-项目3 - 利用二叉树遍历思想解决问题
- 第十周项目3-利用二叉树遍历思想解决问题
- 第十周-项目3 - 利用二叉树遍历思想解决问题
- 第十周项目3-利用二叉树遍历思想解决问题
- 第十周 项目3-利用二叉树遍历思想解决问题
- 第十周项目3利用二叉树遍历思想解决问题
- 第十周 项目3--利用二叉树遍历思想解决问题
- 第十周项目3-利用二叉树遍历思想解决问题
- 第十周项目3【利用二叉树遍历思想解决问题】
- 第十周项目3 - 利用二叉树遍历思想解决问题
- 第十周 项目3 利用二叉树遍历思想解决问题
- 第十周项目3-利用二叉树遍历思想解决问题
- 第十周项目3利用二叉树遍历思想解决问题
- 第十周 项目3-利用二叉树遍历思想解决问题
- 第十周项目3-利用二叉树遍历思想解决问题
- 第十周项目3-利用二叉树遍历思想解决问题
- 第十周项目3利用二叉树遍历思想解决问题
- (第十周项目3)利用二叉树遍历思想解决问题
- elasticsearch的Search Type类型分析
- makefile练习1
- JavaScript动态增加删除UL节点LI及相关内容
- 数据引擎-阿里的ODPS大规模计算引擎
- 二叉树的链式存储及基本运算
- 第十周项目3 利用二叉树遍历思想解决问题(3)
- 第十二周项目2-操作用邻接表存储的图
- 第十一周项目1-验证算法(3)中序线索化二叉树的算法验证
- 解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题
- Socket 与 Android Socket AIO 库 Naga 的介绍
- 困难的串(Krypton Factor,UVa 129)
- 第十二周 项目三(1) 图遍历算法实现
- iOS本地化
- 数据库设计过程遇到的零散点记录powerdesigner 数据库设计 表设计