二叉树的二叉链表的存储结构:

typedef   char   TElemType;

typedef   struct    BiTNode

{

TElemType data;//数据元素

BiTNode  *  lchild;//指向左孩子

BiTNode  *  rchild;//指向右孩子

}BiTNode,* BiTree;

一、二叉树的深度

如果二叉树为空,结点的深度为0;

如果二叉树只有一个结点G为例,其中,它的左右子树的深度为0;而这种情况二叉树的深度为1。

如果二叉树有两个结点D,G为例,其中,以D为根结点的二叉树的左子树的深度为0,右子树的深度为(0+1);而这种情况二叉树的深度为2。

…………

如果二叉树有n个结点,二叉树的深度为二叉树左右子树深度的最大值+1。

代码:

int Depth(BiTree T)

{

int m,n;

if(!T)                                                   return 0;

if(!T->lchild && !T->rchild)         return 1;

else

{

m = Depth(T->lchild);

n = Depth(T->rchild);

return 1+(m>n?m:n);

}

}

二、二叉树的叶子结点数

如果二叉树为空,二叉树的叶子结点数为0;

如果二叉树只有一个结点G(左右子树为空)为例,而这种情况二叉树的叶子结点数为1。

如果二叉树有两个结点D(右子树为非空),G(左右子树为空)为例,其中,以D为根结点的二叉树的左子树的叶子结点数为0,右子树的叶子结点数为1;而这种情况二叉树的叶子结点数为1。

…………

如果二叉树有n个结点,二叉树的叶子结点数为二叉树左右子树叶子结点数的和。

代码:

int CountLeaf(BiTree T)

{

int m,n;

if(!T)                                                             return 0;

if(!T->lchild && !T->rchild)                 return 1;

else

{

m = CountLeaf(T->lchild);

n = CountLeaf(T->rchild);

return m+n;

}

}

三、二叉树的结点数

如果二叉树为空,二叉树的结点数为0;

如果二叉树只有一个结点G(左右子树为空)为例,而这种情况二叉树的结点数为1。

如果二叉树有两个结点D(右子树为非空),G(左右子树为空)为例,其中,以D为根结点的二叉树的左子树的结点数为0,右子树的结点数为1;而这种情况二叉树的结点数为2。

…………

如果二叉树有n个结点,二叉树的结点数为二叉树左右子树结点数的和+1(根结点)。

代码:

int Count(BiTree T)

{

int m,n;

if(!T)                                                      return 0;

if(!T->lchild && !T->rchild)           return 1;

else

{

m = Count(T->lchild);

n = Count(T->rchild);

return m+n+1;

}

}

c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数相关推荐

  1. 计算二叉树的深度和叶子结点数

    目录 一.求给定二叉树的深度 二.求给定二叉树中的叶子结点数 三.例题 一.求给定二叉树的深度 二叉树的深度就是二叉树中结点的最大层次.如果二叉树是空树,则深度为0:否则,可分别求二叉树根的左子树和右 ...

  2. 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。

    假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法. #include<iostream>//蓝多多算法实验五:二叉树的应用(二) #inclu ...

  3. C++数据结构与算法—用递归方法求二叉树的叶子结点数

    用递归方法写一个算法,求二叉树的叶子结点数int leafnum(BTREE T). 要求: 1.定义二叉树的抽象数据类型和型BTREE,并定义基本操作. 2.编写函数1eafnum(BTREE T, ...

  4. 【数据结构】求以孩子兄弟表示法存储的森林的叶子结点数,树高

    1.求叶子结点数 T的第一个孩子存在T->firstChild里,所以如果T连第一个孩子都没有,那肯定为叶子结点,也就是说T->firstChild==NULL. 所以说,以孩子兄弟表示法 ...

  5. 代码实现求二叉树结点数和叶子结点数(C语言)

    本篇会用到之前讲过的二叉树三种遍历方法的代码实现,当然这里还会再写一遍,可以先去看这篇博客二叉树的概念及三种遍历方法(C语言)_Perfectkn的博客-CSDN博客 目录 两种方法求二叉树结点总个数 ...

  6. python求二叉树高度_求二叉树高度代码报错,求大佬解答

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下 class BTree(object): def __init__(self, data=None, left=None, right=None ...

  7. 天梯选拔:先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数

    思路分析: 这道题考察二叉树的建立以及二叉树的前序遍历.中序遍历和后序遍历.首先按照先序建立二叉树.在这期间需要先建立一个结构体,包括当前节点的值,以及它的左儿子和右儿子.注意这里不能直接存左儿子和右 ...

  8. 数据结构,计算二叉树叶子结点数 C语言实现

    树的存储结构 typedef struct BiTNode {char data;struct BiTNode* lchild, * rchild; }BiTNode, * BiTree; 代码实现 ...

  9. 编程求以孩子兄弟表示法存储的森林的叶子结点数☆

    题目:编程求以孩子兄弟表示法存储的森林的叶子结点数 分析:我们可以试想一个节点它如果有左孩子,那么根据孩子兄弟表示法的规则,那它一定不是叶节点,相反如果没有左孩子,那么             它一定 ...

最新文章

  1. 2021新兴经济体大学排名发布,129所中国高校上榜!
  2. C++矩阵运算库推荐
  3. 6. ZigZag Conversion
  4. 试用了一下sourceMonitor有点不知所云..
  5. wrf_input文件解析(PART1)未完
  6. 北京租房一个月多少钱?数据带你了解北京8月各区租金情况
  7. SpringBoot 2.x 监控中心:Actuator
  8. [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及防御机理
  9. c语言源程序文件.c如何保存,急求如何将下列C语言程序数据存储到文件中?
  10. dj电商-需求分析-购物车模块与订单模块
  11. android 精选文章
  12. Python中的logging模块
  13. jenkins的安装与使用
  14. [Bootstrap]7天深入Bootstrap(1)入门准备
  15. 安装mysql输入_安装mysql
  16. 康拓电梯卡延期与通楼修改教程
  17. ad19原理图标注_Altium Designer 19绘制stm32最小系统原理图库及原理图
  18. 创新创业大赛的目的是什么?为什么要参加创新创业大赛?
  19. 游戏中的事件管理--观察者模式的解读
  20. 计算机国考报哪些岗位,国考职位有哪些

热门文章

  1. STM32编写时的技巧(适用于新手)
  2. 大话设计模式之爱你一万年:第十章 结构型模式:组合模式:爱如此简单:1.组合模式基本概念
  3. 佳能 RF800mm F5.6、RF1200mm F8 评测
  4. F.凛冬将至(带权LCA)
  5. 基于diagnose-tools 学习字符设备
  6. c语言中无符号和有符号之间的运算
  7. 学习es6的继承与原型链
  8. 什么情况下不能弱势?
  9. Android老油条都知道的7个Gradle实用奇技淫巧,kotlin高阶函数和lambda示例
  10. 东莞第七高级中学2021高考成绩查询,在高级,遇见最好的自己 ——记东莞高级中学2020-2021学年开学典礼...