一个二叉树结点总数的算法

lin15889821971 2015-05-07 05:48:13
typedef struct btNode{
int data;
btNode *lchild;
btNode *rchild;
}btNode;

int count(btNode *T){
if(T){
int m=count(T->lchild);
int n=count(T->rchild);
count=m+n+1;
}
else
count+=0;
}

这个算法对吗?如果对的话,怎么理解这个程序呢?我不明白他是怎么一步步执行的
...全文
970 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
未狂 2016-02-14
  • 打赏
  • 举报
回复
递归是最基本的思想 任何有关数据结构的参考资料里,都有这得计算结点数量的函数
J_Anson 2016-01-17
  • 打赏
  • 举报
回复
http://blog.csdn.net/j_anson 找到二叉树算法,里头有二叉树所有算法的实现,包括求节点总数
ahu9870 2015-05-09
  • 打赏
  • 举报
回复
程序中 count 没有没有见到初始化为 0 吧,不完整
  • 打赏
  • 举报
回复
int m=count(T->lchild); 递归左子树, int n=count(T->rchild);递归右子树,,然后一步步合并上去,分治思想。 说明下最后情况,估计你就理解了。 当 int m=count(T->lchild)递归到最左边的时候,他的左节点数为0,右节点为0,因为他是叶子节点,算上他自己,一共是一个。 返回上次递归点,左节点一个+右节点数+他自己,总节点,然后一个个返回递归。

33,007

社区成员

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

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