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

求二叉树的高度(递归和非递归)

假设二叉树采用二叉链表存储结构,设计一个算法求二叉树的高度。

递归:

int getTreeHight(BiTree T){if(T==NULL){return 0;}else {int lh = getTreeHight(T->lchild);int rh = getTreeHight(T->rchild);return (lh>rh?lh:rh)+1;}}

时间复杂度O(n);空间复杂度O(n)

非递归

思想:先获得当前层的节点个数,遍历完队列中的节点就是处理完该层。这时候队列中所有节点就是下一层的。每处理一层,层数+1

int getTreeHight(BTree T){//树空 if(T==NULL){return 0;}//初始化队列 BTiree Q[MaxSize];int rear=-1,front=-1;Q[++rear]=T;//根入队 BTiree p;int last=0;//指向当前层最后一个结点 int count=0;//记录层数 while(front<rear){p=Q[++front];if(p->lchild){Q[++rear]=p->lchild;}if(p->rchild){Q[++rear]=p->rchild;}//当前层结点访问完毕,rear刚好指向下一层的最后一个结点 if(front==last){count++;last=rear;//指向下一层最后一个结点 }}return count;
}

时间复杂度O(n);空间复杂度O(n) 

http://www.lryc.cn/news/446186.html

相关文章:

  • Java查找算法——(四)分块查找(完整详解,附有代码+案例)
  • 进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结
  • 类似QQ聊天功能的Java程序
  • Redis 键值对数据库学习
  • 逆向推理+ChatGPT,让论文更具说服力
  • 「JavaScript深入」一文说明白JS的执行上下文与作用域
  • Qt C++设计模式->组合模式
  • Acwing Bellman-Ford SPFA
  • 我能禁止使用某协议的ip禁止访问我的资源吗
  • 快速理解TCP协议(二)——TCP协议中的拥塞控制机制详解
  • Linux:debug: systemtap: ubacktrace
  • 使用AI进行需求分析的案例研究
  • Python内置的re库
  • 毕业设计选题:基于ssm+vue+uniapp的面向企事业单位的项目申报小程序
  • jQuery 简介⑤属性操作
  • [Linux] Linux操作系统 进程的状态
  • 深入解析Python 中的 sortedcontainers 库:高效的排序数据结构
  • 什么是服务器日志,日志有什么作用?
  • Codeforces Round 971 (Div. 4)A-G1题解
  • QT----基于QML的计时器
  • Stable Diffusion的高分辨率修复(Hires.fix)
  • 智慧体育馆可视化:实时监控与智能管理
  • 【NLP】基于“检测器-纠错器”中文文本纠错框架
  • vue 中加载 Mapbox GL JS Examples
  • Vue3 中组件传递 + css 变量的组合
  • 秋分之际,又搭建了一款微信记账本小程序
  • 聚合函数count 和 group by
  • Vue的工程化和element快速入门
  • 【Kubernetes】常见面试题汇总(三十一)
  • 在 Windows 上安装和配置 NVIDIA 驱动程序、CUDA、cuDNN 和 TensorRT