这样求二叉树的深度是否合理?

csdn5211 2006-12-21 09:17:30
用先序非递归遍历,设置一个变量,每次进栈时加一,出栈时减一,如果当前访问节点是叶子节点,就把这个变量记录下来。最后求所有记录下来的最大值。
...全文
395 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjq87 2006-12-21
  • 打赏
  • 举报
回复
//栈的函数写的不是很好
//退栈的时候隐含了depth--
#include <stdio.h>
#include <malloc.h>
#define M 10 /* 假设二叉树最多的层数 */
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct Stack
{
char data;
BiTree * top;
BiTree * base;
}Stack;
void InitStack(Stack &S)
{
S.base=(BiTree *)malloc(sizeof(BiTree)*M);
S.top=S.base;
}
void push(Stack &S,BiTree p)
{
*S.top=p;
S.top++;
}
void pop(Stack &S,BiTree &p)
{
S.top--;
p=*S.top;
}
int StackEmpty(Stack S)
{
if(S.base==S.top)
return 1;
else
return 0;
}
void CreateBiTree(BiTree &T) /* 按先序序列建立一个二叉树 */
{
char c;
scanf("%c",&c);
if (c=='#')
T=NULL;
else
{
if (T)
{
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = c; /* 生成根结点 */
CreateBiTree(T->lchild); /* 构造左子树 */
CreateBiTree(T->rchild); /* 构造右子树 */
}
}
}

int DepthTree(BiTree &T)
{
BiTree p;
int depth, max;
Stack S;
InitStack(S);
p=T;
depth=max=0;
while(p||!StackEmpty(S))
{
if(p)
{
push(S,p);
p=p->lchild;
depth++;
if(max<depth)
max=depth;
}
else
{
pop(S,p);
p=p->rchild;
}
}
return max;
}
void main()
{
BiTree T;
printf("Please input(end with \"#\"):\n");
CreateBiTree(T);
printf("The depth of the tree is:");
printf("%d\n",DepthTree(T));
}
cjq87 2006-12-21
  • 打赏
  • 举报
回复
是合理的
我以前用这种方法编过这个程序
构网型变流器正负序阻抗解耦特性及扫频验证研究(Simulink仿真实现)内容概要:本文围绕构网型变流器的正负序阻抗解耦特性及其扫频验证方法展开研究,基于Simulink平台构建仿真模型,深入分析构网型变流器在不对称电网条件下的阻抗特性。通过建立正负序阻抗模型,揭示其解耦机理,并采用小信号注入法进行扫频仿真,提取频率响应数据以验证理论建模的准确性。研究重点在于掌握构网型变流器在复杂电网环境中的稳定性表现,尤其是其与电网交互作用下的动态响应特性,为提升新型电力系统中逆变器并网稳定性提供理论支持和技术路径。; 适合人群:具备电力电子、电力系统分析或自动控制相关背景,熟悉Simulink仿真工具,从事新能源并网、微电网控制、逆变器建模与稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握构网型变流器正负序阻抗建模与解耦分析方法;② 学习基于扫频法的小信号稳定性评估技术;③ 应用于构网型逆变器控制系统设计与并网稳定性优化;④ 支撑高水平论文撰写与科研项目实施。; 阅读建议:建议读者结合Simulink仿真模型同步操作,深入理解扫频仿真流程与阻抗提取方法,关注正负序耦合对系统稳定性的影响机制,同时参考文中建模思路拓展至其他类型变流器的稳定性分析研究。
【虚拟储能】建筑综合能源优化+热舒适度研究(Matlab代码实现)内容概要:本文围绕“虚拟储能”概念,重点研究建筑综合能源系统的优化运行与热舒适度提升,采用Matlab进行代码实现与仿真分析。通过构建空调与电动汽车联合虚拟储能模型,实现对海岛微电网或建筑能源系统的协同优化调度,旨在平衡能源供需、降低能耗、提高可再生能源利用率,并兼顾用户的热舒适性需。文中整合了智能优化算法、需响应机制与多目标优化策略,展示了如何利用虚拟储能技术增强系统灵活性和经济性。; 适合人群:具备一定电力系统、能源系统或自动化背景,熟悉Matlab/Simulink仿真工具,从事相关领域科研工作的研究生及工程技术人员;尤其适合研究综合能源系统、微电网优化、需侧管理与建筑节能方向的研究者。; 使用场景及目标:① 实现建筑或微电网中空调、电动汽车等柔性负荷参与虚拟储能的建模与仿真;② 掌握基于Matlab的综合能源系统多目标优化调度方法;③ 学习如何将热舒适度指标融入能源优化模型,提升系统的人性化与实用性;④ 为撰写高水平论文(如SCI/EI)或完成硕士/博士课题提供复现案例和技术支持。; 阅读建议:建议结合文中提供的完整资源(包括代码、文献、仿真模型)进行实践操作,重点关注目标函数设计、约束条件设定及算法实现细节。同时可参照其他类似主题(如V2G、需响应、多能协同优化)的内容拓展研究思路。

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧