假设二叉树采用链接方式存储,编写一个计算一颗二叉树t的高度的函数
2017-11-08 21:53
405 查看
如上图,如果是按照对称序周游的话,则节点序列为:B D A E C F;是在B开始探索,B没有左节点则B的左return 0 即B节点的h1= 0,B有一个右节点D,则进入D开始探索,D左右都没有节点则D的左右都是return 0 即D节点h1 = 0, h2 = 0, 然后执行D节点的①即h = h2 +1即h=0 + 1 返回1给B的h2。然后执行B节点的①即h = h2 + 1即h = 1+1 返回2 给A点的h1。然后执行A节点的②.......以此递归
int BiTreeDepth(BiTree T)
{ int h1,h2,h; if (T==NULL) return 0; else { h1=BiTreeDepth(T->lchild); ② h2=BiTreeDepth(T->rchild); ① if (h1>h2) h=h1+1; else h=h2+1; } return h; }
相关文章推荐
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- 练习2-1 编写一个程序一确定分别由signed及unsigned限定的char,short,int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现。通过直接计算来确定浮点类型的取值范围是一项难度很大的任务。
- 编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实现
- 分别采用递归和非递归方式编写两个函数,求一棵二叉树中叶子节点个数
- 试编写一个函数,返回一颗给定二叉树在中序遍历下的最后一个节点(分别用递归和非递归实现)
- 一个数组中存储有且仅有大写和小写字母,编写一个函数对数组内的字母重新排列,让小写字母在所有大写字母之前
- 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
- 编写一个学生信息管理系统:学生信息包括有(学生学号、姓名、性别、手机号码),系统以学生对象数组的方式存储学生信息 (初始数组为10个元素,每当数组存储满时,需要进行扩容,规则可以为翻倍也可以固定增长
- 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
- 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
- 编写一个函数计算小费,小费为总账单的20%
- 设计一个算法,采用BFS方式输出图G中从顶点u到v的最短路径(不带权的无向连通图G采用邻接表存储)
- 编写一个函数,返回一个int数组中存储的最大数值,并在一个简单的程序中测试这个函数。(有缺陷)
- 两棵树都是空树,或者非空且具有相似的左子树和右子树,则这两棵树是相似的。编写一个函数以确定是否两棵二叉树是相似的
- 在一个长度为10的整型数组里面,保存了班级10个学生的考试成绩。要求编写5个函数,分别实现计算考试的总分,最高分,最低分,平均分和考试成绩降序排序
- 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
- 编写函数fun,其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的十位和千位上,b数的十位和个位依次放在c数的百位和各位上
- 习题 8.19(1) 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。
- 以面向对象方式编写一个计算电话费的程序
- 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。