数据结构C语言版树形结构

St中元素 算法执行的操作 ch AC k=2 , AC 建立E结点,因k=1,将其作为C结点的左孩子结点 E AC C结点进栈,k=1 ( A 建立C结点,因k=2,将其作为A结点的右孩子结点 C A k=2 , A 退栈一次 ) AB 退栈一次 ) ABD 建立E结点,因k=2,将其作为D结点的右孩子结点 G ABD k=2 , ABD D结点进栈,k=1 ( St中元素 算法执行的操作 ch ? 算法结束 ch扫描完毕 空 退栈一次 ) A 退栈一次 ) AC 建立F结点,因k=2,将其作为C结点的右孩子结点 F 生成的二叉树=> (2)查找结点FindNode(*b,x) 采用先序遍历递归算法查找值为x的结点。找到后返回其指针,否则返回NULL。算法如下: BTNode *FindNode(BTNode *b,ElemType x) { BTNode *p; if (b==NULL) return NULL; else if (b->data==x) return b; else { p=FindNode(b->lchild,x); if (p!=NULL) return p; else return FindNode(b->rchild,x); } } (3)找孩子结点LchildNode(p)和RchildNode(p) 直接返回*p结点的左孩子结点或右孩子结点的指针。算法如下: BTNode *LchildNode(BTNode *p) { return p->lchild; } BTNode *RchildNode(BTNode *p) { return p->rchild; } (4)求高度BTNodeDepth(*b) 求二叉树的高度的递归模型f()如下: f(NULL)=0 f(b)=MAX{f(b->lchild),f(b->rchild)}+1 其他情况 对应的算法如下: int BTNodeDepth(BTNode *b) { int lchilddep,rchilddep; if (b==NULL) return(0); /*空树的高度为0*/ else { lchilddep=BTNodeDepth(b->lchild); /*求左子树的高度为lchilddep*/ rchilddep=BTNodeDepth(b->rchild); /*求右子树的高度为rchilddep*/ return(lchilddep>rchilddep)? (lchilddep+1):(rchilddep+1); } } (5)输出二叉树DispBTNode(*b) 其过程是:对于非空二叉树b,先输出其元素值,当存在左孩子结点或右孩子结点时,输出一个“(”符号,然后递归处理左子树,输出一个“,”符号,递归处理右子树,最后输出一个“)”符号。对应的递归算法如下: void DispBTNode(BTNode *b) {if (b!=NULL) { printf("%c",b->data); if (b->lchild!=NULL || b->rchild!=NULL) { printf("("); DispBTNode(b->lchild); /*递归处理左子树*/ if (b->rchild!=NULL) printf(","); DispBTNode(b->rchild); /*递归处理右子树*/ printf(")"); } } } 例7.3 假设二叉树采用二叉链存储结构,设计一个算法判断两棵二叉树是否相似,所谓二叉树t1和t2是相似的指的是t1和t2都是空的二叉树;或者t1和t2的根结点是相似的,以及t1的左子树和t2的左子树是相似的且t1的右子树与t2的右子树是相似的。 解:判断两棵二叉树是否相似的递归模型f()如下: f(t1,t2)=true 若t1=t2=NULL f(t1,t2)=false 若t1、t2之一为NULL,另一不为NULL f(t1,t2

c语言打印树形图形,数据结构C语言版树形结构.ppt相关推荐

  1. 怎某泳c语言输出图形,c语言打印字符图形.doc

    c语言打印字符图形.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得 ...

  2. c语言 静态链表插入排序,数据结构C语言版 表插入排序

    西门豹治邺奇计 数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P2 ...

  3. 用c语言绘制五角星图形,用c语言画出一个五角星图案

    用c语言画出一个五角星图案 感觉上五角星和六角星 的思路差不多,所以就不做重复劳动啦~嘿嘿O(∩_∩)O~ 以下公布一个非本人的代码,虽然感觉这个五角星画的不是很"正",但总体感觉 ...

  4. 数据结构c语言课程设计报告,(数据结构c语言课程设计报告.doc

    (数据结构c语言课程设计报告 数据结构 课程设计报告 设计题目:迷宫求解 专 业 机电一体化 班 级 08专接本 学 生 学 号 104910252011 指导教师 高在村 完成时间 2011. 5 ...

  5. c语言编程队列题,数据结构C语言编程 队列.doc

    数据结构C语言编程 队列 #include #include #define MAXQSIZE 10 typedef struct { int *base; //存储空间的起始地址,即数组的首地址,即 ...

  6. 猴子选王c语言链表程序代码,数据结构(C语言)用栈和链表编写猴子选大王程序...

    <数据结构(C语言)用栈和链表编写猴子选大王程序>由会员分享,可在线阅读,更多相关<数据结构(C语言)用栈和链表编写猴子选大王程序(3页珍藏版)>请在人人文库网上搜索. 1.i ...

  7. c语言打印%-6llu,从零开始学C语言

    从零开始学C语言 @阆苑祁寒 写在前面:本文从一个初学者的角度,给出了对C语言的简单理解.如有谬误,敬请指出! Week1 1 #include 2 int main(void)3 {4 printf ...

  8. 数据结构c语言大题答案,数据结构c语言版试题大全(含答案)

    if (i*1.0>sqrt(n)) printf \是一素数\ else printf \不是一素数\} (2) sum1(int n) - 9 - { int p=1,sum=0,i; fo ...

  9. c语言打印空心等腰梯形乐学,C语言做激光发射

    /*C语言做激光发射器游戏,按上下左右箭头键移动 发射器,按空格键发射激光,按Esc键结束游戏*/ #include #include #include void main() { int i,j;/ ...

最新文章

  1. ECLIPSE 插件使用LINKS目录的用法
  2. 超四分之一的人工可能被机器取代,AI或成英国脱欧的一大阻碍
  3. .NET Core 2.0应用程序大小减少50%
  4. 2021年中国带LED显示屏的温度调节器市场趋势报告、技术动态创新及2027年市场预测
  5. java树广度优先_如何在功能上生成树广度优先 . (使用Haskell)
  6. java button 背景色_以编程方式删除UIButton背景颜色
  7. 小学生python游戏编程5----拼图游戏继
  8. nginx系列第一篇:nginx源码下载,编译和安装
  9. 手把手教你搭建基于 MarkDown 的 Wiki 系统
  10. Maven 配置阿里云镜像
  11. 有了这5个免费下载音乐的wangzhan,从此告别各种VIP
  12. 软件测试找游戏bug,游戏测试用例及游戏测试bug详解
  13. 在服务端录制语音视频
  14. cad制图与计算机方面的联系,计算机与CAD制图理论知识.doc
  15. app怎么调用mysql数据_教你如何拿别人APP中的数据
  16. found dwarf version #039;4#039; linux,开发一个Linux调试器(四):Elves和dwarves
  17. Dva的Effects接受的参数
  18. 简单html js 特效,Js实现简单的小球运动特效
  19. 读《测试驱动开发的3项修炼--走出TDD丛林》
  20. onegreen的绿软word2003绿色版删除不掉的解决方案

热门文章

  1. python2.X在linux上的安装
  2. 基于mindspore的口罩检测训练与在线推理
  3. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
  4. 在shell脚本中调用sqlplus
  5. Spark配置属性详解
  6. Lamport Logical Clock 学习
  7. 深度学习笔记:手写一个单隐层的神经网络
  8. LAMP+LNMP(三)Apache(httpd)安装实践
  9. 梁勇 java教材 编程练习题 第二章 2.6 键盘 读取一个在0 到 9999 之间的整数,并将该整数的各位数字相加。...
  10. 【EASYDOM系列教程】之创建页面元素