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

csdn5211 2006-12-21 09:17:30
用先序非递归遍历,设置一个变量,每次进栈时加一,出栈时减一,如果当前访问节点是叶子节点,就把这个变量记录下来。最后求所有记录下来的最大值。
...全文
368 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
  • 打赏
  • 举报
回复
是合理的
我以前用这种方法编过这个程序
内容概要:本文系统介绍了交直流混合配电网潮流计算的统一解法,并提供了基于Matlab的完整代码实现方案。该方法通过构建统一的数学模型,对交流与直流子系统进行一体化建模与解,充分考虑了两者之间的耦合特性,实现了对系统电压、电流、功率等关键参数的精确计算。文中详细阐述了算法的理论基础、建模步骤、迭代解流程及收敛判据,并通过标准测试系统或典型算例进行了仿真验证,结果表明该方法具有较高的计算精度、良好的收敛性和较强的工程适用性,尤其适用于包含分布式电源、电力电子变换器等新型元件的现代复杂配电网分析。; 适合人群:具备电力系统分析基础知识和Matlab编程能力的高等院校研究生、从事电力系统规划、运行与控制的科研人员及工程技术人员。; 使用场景及目标:①用于交直流混合配电网的稳态运行特性分析与仿真研究;②支撑含高比例新能源接入、直流配电、柔性互联装置的配电网规划、优化调度与控制策略开发;③为相关领域的学术研究、毕业设计及工程项目提供可靠、高效的潮流计算工具与技术参考。; 阅读建议:建议读者结合Matlab代码与文本说明进行同步学习,重点理解统一解模型的构建逻辑、变量处理方式及算法实现细节,可尝试修改系统参数、网络拓扑或扩展应用场景以验证方法的适应性与鲁棒性,并推荐将其拓展应用于多端直流系统、主动配电网或综合能源系统等更复杂的场景中进行深入研究。
内容概要:本文研究了基于改进遗传算法的电力系统无功优化问题,以IEEE30节点标准系统为仿真平台,采用Matlab进行算法编程与仿真验证。研究构建了包含网损最小化和电压质量提升的多目标无功优化数学模型,设计合理的适应度函数并处理各类等式与不等式约束条件,针对传统遗传算法易陷入局部最优、收敛速度慢等问题,引入了改进策略以增强种群多样性、加快寻优效率。通过仿真实验对比分析,验证了改进算法在降低系统有功网损、改善节点电压水平、提高系统运行稳定性与经济性方面的优越性能,为电力系统无功优化提供了有效的智能计算解决方案。; 适合人群:具备电力系统分析基础和Matlab编程能力,从事电力系统运行与控制、智能优化算法研究的研究生、科研人员及电力工程技术人员。; 使用场景及目标:①应用于实际电力系统的无功补偿配置与电压调控,提升电网运行效率与供电品质;②为智能优化算法在复杂电力工程问题中的应用提供典型范例;③作为高校电力专业高年级本科生或研究生开展无功优化课题研究与仿真实践的教学参考资料。; 阅读建议:读者应结合Matlab代码与IEEE30节点系统原始数据进行动手复现,重点剖析算法改进机制对优化性能的影响,深入理解无功优化模型的物理意义与工程约束的数学表达,从而掌握智能算法解决电力系统实际问题的完整技术路线。

33,028

社区成员

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

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