第十周项目3 利用二叉树的遍历思想解决问题(2)
2015-11-16 16:56
465 查看
问题与代码
//head.h
//main.cpp
//zdy.cpp
运行结果
知识点总结
遍历左子树,判断节点的孩子节点是否存在,若不存在即为叶子节点,右子树亦如此。
/* *Copyright (c) 2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:head.h,main.cpp,zdy.cpp *作者:陈梦萍 *完成日期:2015年11月16日 *版本号:v1.0 * *问题描述: 输出所有叶子节点; *输入描述:无 *程序输出:若干数据 */
//head.h
#include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef 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); //销毁二叉树 void DispLeaf(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("二叉树中所有的叶子节点是: "); DispLeaf(b); printf("\n"); DestroyBTNode(b); return 0; }
//zdy.cpp
#include"head.h" void DispLeaf(BTNode *b) { if (b!=NULL) { if (b->lchild==NULL && b->rchild==NULL) printf("%c ",b->data); else { DispLeaf(b->lchild); DispLeaf(b->rchild); } } } 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); } }
运行结果
知识点总结
遍历左子树,判断节点的孩子节点是否存在,若不存在即为叶子节点,右子树亦如此。
相关文章推荐
- 第八周 项目4 字符串加密
- cocos2d-x学习笔记(3)场景切换
- 第十二周--图的遍历
- 项目2-操作用邻接表存储的图
- 第十二周项目五~~迷宫问题
- 用Facebook开源框架Frescok加载网络图片的简单使用
- 线性表6 – 数据结构和算法11
- Linux C 时间服务器
- xcode的-other Linker flags
- iOS学习笔记42-Xcode 7免证书真机调试
- Appium中长按按钮操作
- Memory Networks的阶段总结
- 第11周 项目1-验证算法(3)线索化二叉树(中序)
- 第十二周 项目一 图基本算法库
- python的加密模块(md5,sha,crypt)学习
- Android中dp和px的关系
- 线性表5 – 数据结构和算法10
- centos的安装以及yum源的配置以及视频flash的设置
- 文件下载
- nginx查看配置文件nginx.conf路径