• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
数据结构:二叉树的叶子结点连成单链表
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
数据结构:二叉树的叶子结点连成单链表
软件发布 数据结构:二叉树的叶子结点连成单链表
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 程序员 >> 数据结构:二叉树的叶子结点连成单链表

数据结构:二叉树的叶子结点连成单链表

添加时间: 2007-4-9 1:16:18  作者: 程序员认证参考  阅读次数:51   来源: http://www.d9soft.com

       

【题目】请设计一个算法,把二叉树的叶子结点按从左到右的顺序连成一个单链表。二叉树按lchild - rchild 的方式存储,链接时用叶子结点的rchild 域存放指针。

【来源】长沙铁道学院99年第四(3)题(8’)

【解答】
#include
#include
#include
#include
typedef struct node{
char c;
int count;
struct node *left,*right;
}bnode;
bnode *k,*m; // 分别记录叶子链表的第一及当前结点的前驱

bnode *creatree(bnode *ptr,char ch) // 建二叉树
{ int result;bnode *p,*r; // p 指向当前结点的最近的父结点
p=NULL;r=ptr;
while(r){ // 检查 是否存在相同结点
result=(int)(r->c)-(int)(ch);
if(!result){r->count+=1;return r;}
else
{p=r;
r=result<0?r->right:r->left;
}
}
r=(struct node *)malloc(sizeof(bnode));// 建新结点
r->left=r->right=NULL;
r->c=(char)malloc(sizeof(char));
r->c=ch;r->count=1;
if(!ptr)return r;
else if(result>0) p->left=r;
else p->right=r;
return r;
}


leaflink(bnode *root)
{
if(!root)return;
if(root->left==NULL&&root->right==NULL){
if(k==NULL)k=m=root; // 保存找到的第一个叶子结点(k指针)
else {m->right=root;m=m->right;}}
if(root->left)leaflink(root->left);
if(root->right)leaflink(root->right);
return;
}

main()
{
char *s;
bnode *root=NULL;
printf("Input a string:");
scanf("%s",s);
do{
if(!root)root=creatree(root,*s);
else creatree(root,*s);
s+=1;
}while(*s);
leaflink(root); // 将叶结点链成链表
while(k){printf("%c",k->c);k=k->right;} // 输出该链表
}

【分析】建一个一般的二叉树如果采用递归的话,将对调用该二叉树造成不便;相反,采用非递归建一个二叉排序树既简单又实用。

 

上下文章:

 

上一篇文章: 数据结构:如何产生素数 下一篇文章: 进程退出前删除自身EXE

相关文章:

  • 艾瑞数据显示:暴风影音市场优势明显
  • Oracle下调数据库许可价格以适应多芯CPU
  • Oracle发布免费数据库管理工具Raptor
  • 甲骨文意外泄漏数据库安全漏洞
  • Oracle认证数据库备份技巧

相关软件:

  • 三维数据成像3D Surfer 2.0
  • Access数据库密码破解器 V2.65
  • dbguide 数据库管理专家 V1.3.0.0
  • HiHand结构设计工具箱 2005 Build 0903
  • 网际数据库浏览器 3.0.52
  • 数据计算软件DCS 2.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

认证考试分类导航

  • 微软认证
  • 计算机等级考试
  • 软件水平考试
  • 思科认证
  • Oracle认证
  • Linux认证
  • JAVA认证
  • 网络工程师
  • 系统工程师
  • 程序员

本类经典文章推荐

  • 软考系统分析师考试须知
  • C++箴言:绝不在构造或析构期调用...
  • 数据结构:判别是否为二叉排序树的...
  • 一个程序员的成长的六个阶段
  • 程序员英语试题常见硬件名和设备名
  • 从一个程序出发详细研究DataReader
  • 如何判断程序处于运行环境还是调试...
  • 程序高手必读:写好C程序的10条秘...
  • 程序员介绍:程序员的“素质”是什...
  • C++箴言:让=返回一个*this的引用

程序员阅读排行

  • 数据结构:判别是否为二叉排序树的...
  • VC++动态链接库(DLL)编程深入浅出...
  • VC++动态链接库(DLL)编程深入浅出...
  • 程序员考试:证书样本
  • 补码加、减运算规则及溢出判断
  • 数据结构:栈和递归求两顶点所有简...
  • DirectX8.0简介(8)
  • 水滴石穿·C语言之代码检查工...
  • 数据结构:打印线索二叉树的中序遍...
  • DirectX8.0简介(3)

认证考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • MCSD简介
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有