当前位置: 首页 > news >正文

二叉树采用二叉链表存储:编写计算整个二叉树高度的算法

二叉树采用二叉链表存储:编写计算整个二叉树高度的算法
(二叉树的高度也叫二叉树的深度)

代码思路
首先你要明白什么是树的高度,简言之就是树有多少层,如下图:
下面这棵树的高度就是4
在这里插入图片描述
首先我们观察根节点,根节点左子树高度是2,右子树高度是3
那么我们取左右子树高度较大值3,再加上根节点自己一个,那根节点高度就是3+1=4

那么问题来了,我们怎么知道根节点左右子树高度呢?
那就遍历一下根节点左右子树呗,问题转换成求结点左右子树高度,
再然后问题就转换成,求根节点左右子树的子树高度了。。。

这样是不是就是我们熟悉的递归啊。

代码实现如下:

int BiTreeDepth(BiTree T) {if (T != NULL) {//递归退出条件return 0;}int i = 0;//标记左子树高度int j = 0;//标记右子树高度if (T->lchild) {//如果还有左子树,往下递归i = BiTreeDepth(T->lchild);}else {i = 0;}if (T->rchild) {//如果还有右子树,往下递归j = BiTreeDepth(T->rchild);}else {j = 0;}return i >= j ? i+1 : j+1;//向上一层结点返回该子树的深度,注意这里要+1因为还有一个根节点高度
}
http://www.lryc.cn/news/217031.html

相关文章:

  • antd Cascader级联菜单无法赋值回显问题
  • 在react中使用redux react-redux的使用demo
  • Flutter 06 动画
  • 优化改进YOLOv5算法之添加MS-Block模块,有效提升目标检测效果(超详细)
  • 【论文阅读】Iterative Poisson Surface Reconstruction (iPSR) for Unoriented Points
  • 通过akshare获取股票分钟数据
  • 【论文阅读笔记】Traj-MAE: Masked Autoencoders for Trajectory Prediction
  • MySQL - Zero date value prohibited
  • 设计模式——迭代器模式(Iterator Pattern)+ Spring相关源码
  • 【word技巧】ABCD选项如何对齐?
  • 如何在uni-app小程序端实现长按复制功能
  • 基于springboot实现在线考试平台项目【项目源码+论文说明】计算机毕业设计
  • 【移远QuecPython】EC800M物联网开发板的内置GNSS定位获取(北斗、GPS和GNSS)
  • 软件设计师2016下半年下午——KMP算法和装饰设计模式
  • Android Studio run main()方法报错
  • CM3D2 汉化杂记
  • 分类预测 | Matlab实现SMA-KELM黏菌优化算法优化核极限学习机分类预测
  • linux的环境安装以及部署前后端分离后台接口
  • 解决mysql数据库root用户看不到库
  • 【LeetCode】117. 填充每个节点的下一个右侧节点指针 II
  • 《研发效能(DevOps)工程师》课程简介(三)丨IDCF
  • 主动激活木马加密流量分析
  • 关于单片机CPU如何控制相关引脚
  • [概述] 获取点云数据的仪器
  • 路由器基础(八):策略路由配置
  • Java 零碎知识点
  • 多模态论文阅读之BLIP
  • OpenCV实战——OpenCV.js介绍
  • qt5工程打包成可执行exe程序
  • Qt之基于QCustomPlot绘制直方图(Histogram),叠加正态分布曲线