当前位置: 代码迷 >> C语言 >> 求教一个算法题。二叉树叶子结点。。
  详细解决方案

求教一个算法题。二叉树叶子结点。。

热度:258   发布时间:2006-08-13 15:57:29.0
求教一个算法题。二叉树叶子结点。。
求教一个算法题!!!!!!!。求二叉树叶子结点数..(具体是叶子数还是结点数,我搞也不清,,考试的题目接是这样的)
下面是老师给的算法,我老看不懂.
int leaf (Bitree,T,int count)
{if(T)
{leaf (T->lchild,count); /*计算左子树的接点树*/
if( (T->lchild==NULL,)&&(T->rchild=NULL) )
count++;
leaf(T->rchlid,count);
if ( (T->lchild==NULL,)&&(T->rchild=NULL) )
count++;
}
ruture count;
}


为什么 "leaf (T->lchild,count)"这句话就能算出左或右子树的接点数呢??到底是什么意思啊!
能给容易懂的算法吗!!!
搜索更多相关的解决方案: 算法题  叉树叶  结点  count  leaf  

----------------解决方案--------------------------------------------------------
程序求的是叶子节点的个数.用递归求解,依次向下求解左子树和右子树,直到遇到叶子接点(即叶子的lchild==NULL&&T->rchild==NULL)count++.
----------------解决方案--------------------------------------------------------

各种遍历都可以...

int bianli1(struct btnode *t)
{
static int i;
if (t)
{if(t->lchile==0&&t->rchild==0) i++;
bianli1(t->lchild);
bianli1(t->rchild);
}
return i;
}

随便写写..不知道对不对,好象差不多

[此贴子已经被作者于2006-8-13 20:18:02编辑过]


----------------解决方案--------------------------------------------------------

#include "Stdio.h"
#include "Conio.h"
typedef struct btnode
{
int num ;
struct btnode *lchild,*rchild ;
}
BTNode ;
typedef struct btree
{
struct btnode *ROOT ;
}
BTree ;
void creatBT(BTree*bt)
{
bt->ROOT=NULL ;
}
void makeBT(BTree*btree,int number,BTree*lt,BTree*rt)
{
BTNode *bt=(BTNode *)malloc(sizeof(BTNode));
bt->num=number;
bt->lchild=lt->ROOT;
bt->rchild=rt->ROOT;
lt->ROOT=rt->ROOT=NULL ;
btree->ROOT=bt ;
}
void leaf(BTNode *T,int *count)
{
if(T)
{
leaf(T->lchild,count);
if((T->lchild==NULL)&&(T->rchild==NULL))
(*count)++;
leaf(T->rchild,count);
if((T->lchild==NULL)&&(T->rchild==NULL))
(*count)++;
}
}

int main(void)
{
BTree a,b,c,d ;
int num=0;
creatBT(&a);
creatBT(&b);
creatBT(&c);
creatBT(&d);
makeBT(&b,2,&d,&d);
makeBT(&c,3,&d,&d);
makeBT(&a,1,&d,&d);
leaf(a.ROOT,&num);
printf("%d",num);
getch();
return 0 ;
}

楼主您的程序仍有问题,刚才没看清,上面的程序是我改后针对您的那断程序测试的,您再看下有错误没,
您的错误在于:函数形参count在传递的过程中始终是以传值的形式,这会导致错误的计算结果,应该改成传址的形式。


----------------解决方案--------------------------------------------------------

谢谢大家教我,我懂了啊,,,!!4楼的好强哦!


----------------解决方案--------------------------------------------------------
你们都好强啊
----------------解决方案--------------------------------------------------------
  相关解决方案