试编写算法,对一棵以孩子—兄弟链表表示的树统计叶子的个数

zhjh9823 2009-12-22 06:46:23
这个题目怎么做???
还请帮忙写出主函数,多谢
...全文
3926 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjh9823 2009-12-23
  • 打赏
  • 举报
回复
多谢各位
renzhewh 2009-12-23
  • 打赏
  • 举报
回复
运行4#的代码,输入ab*c**f**,其中*表示空格。
即可得到运行结果3。
zhjh9823 2009-12-23
  • 打赏
  • 举报
回复
继续顶,找一个可以直接运行的程序就好
inx101 2009-12-22
  • 打赏
  • 举报
回复
该死的递归。。。 该死的标记数列。。。
zhjh9823 2009-12-22
  • 打赏
  • 举报
回复
汗- -!我对这些其实不懂,是帮朋友问来着。。。
能搞个能运行的????
sduxiaoxiang 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huiguixian 的回复:]
C/C++ code#include<stdio.h>
#include<stdlib.h>

typedefchar ElemType;
typedefstruct BTNode{
ElemType data;struct BTNode* left;struct BTNode* right;
}BTreeNode;

BTreeNode*CreateBTree(BTreeNode?-
[/Quote]
孩子-兄弟结构

而且不一定是二叉树。。
zhjh9823 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huiguixian 的回复:]
C/C++ code#include<stdio.h>
#include<stdlib.h>

typedefchar ElemType;
typedefstruct BTNode{
ElemType data;struct BTNode* left;struct BTNode* right;
}BTreeNode;

BTreeNode*CreateBTree(BTreeNode?-
[/Quote]


运行无结果????
小小攻城师 2009-12-22
  • 打赏
  • 举报
回复
用中序遍历的意思是其实统计叶子个数节点一摸一样的,只是把输出换成统计
创建树的函数比较简单 以*做空格 创建一个简单树
abc**d**e*fg***(空格表示出来不好看,所以用*,你输入的时候用同个数的空格)
然后这个树是a的左节点b b的左右节点分别c和d c和d是叶子节点 e是a右节点
f是e的右节点 g是f的左节点 g是叶子节点
楼主把这棵树画出来理解一下
小小攻城师 2009-12-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

typedef char ElemType;
typedef struct BTNode{
ElemType data;
struct BTNode* left;
struct BTNode* right;
}BTreeNode;

BTreeNode *CreateBTree(BTreeNode * HL);
void InOrder(BTreeNode *HL);
int CountTreeLeaf(BTreeNode *HL);

int main()
{
BTreeNode * HL = NULL;
HL = CreateBTree(HL);
InOrder(HL);
printf("%d\n",CountTreeLeaf(HL));
return 0;
}

BTreeNode *CreateBTree(BTreeNode * HL)
{
ElemType ch;
scanf("%c", &ch);
if (ch == ' ')
HL = NULL;
else
{
HL = (BTreeNode *)malloc(sizeof(BTreeNode));
HL->data = ch;
HL->left = CreateBTree(HL->left);
HL->right = CreateBTree(HL->right);
}
return HL;
}

void InOrder(BTreeNode *HL)
{
if (HL != NULL)
{
InOrder(HL->left);
printf("%c ", HL->data);
InOrder(HL->right);
}
}

int CountTreeLeaf(BTreeNode *HL)
{
static int count = 0;
if (HL != NULL)
{
CountTreeLeaf(HL->left);
if (HL->right == NULL && HL->left == NULL)
++count;
CountTreeLeaf(HL->right);
}
return count;
}
zhjh9823 2009-12-22
  • 打赏
  • 举报
回复
额。。。。
不是太明白。。可以帮忙写么
macrojj 2009-12-22
  • 打赏
  • 举报
回复
深度 遍历
sduxiaoxiang 2009-12-22
  • 打赏
  • 举报
回复
递归遍历就是了
如果一个结点的孩子个数为0 叶结点数++
内容概要:本文围绕基于改进遗传算法的电力系统无功优化问题展开研究,以IEEE30节点系统作为标准测平台,采用Matlab进行算法实现与仿真分析。研究构建了以最小化有功网损和电压偏差为核心的多目标优化模型,综合考虑了系统运行的各种等式与不等式约束条件。针对传统遗传算法存在的早熟收敛和收敛速度慢等问题,对算法的编码方式、选择、交叉和变异等关键操作进行了针对性改进,有效提升了算法的全局搜索能力和优化精度。通过仿真实验验证了改进算法在降低系统网损、改善电压质量以及提升系统运行经济性和稳定性方面的显著优势,为电力系统无功优化提供了有效的解决方案和技术参考。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、高校科研人员以及从事电力系统规划、运行与控制的工程技术人员。; 使用场景及目标:①深入理解电力系统无功优化的数学建模方法与工程意义;②掌握智能优化算法(特别是改进遗传算法)在复杂非线性工程问题中的设计、实现与应用技巧;③为实际电力网络的节能降耗、电压稳定控制及安全经济运行提供可行的优化策略与仿真验证手段。; 阅读建议:学习者应结合提供的Matlab代码,重点剖析目标函数的构建逻辑、约束条件的处理方法(如罚函数法)以及遗传算子的具体改进策略,建议通过调整种群规模、迭代次数、交叉与变异概率等关键参数进行对比实验,以深入探究算法性能与参数设置之间的内在关系。

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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