写出求二叉树的叶子结点数目的算法

发布网友 发布时间:2022-04-20 21:45

我来回答

3个回答

热心网友 时间:2023-09-04 13:52

int BtreeDepth(BiTNode *BT){//求二叉树的深度
if (BT==NULL)//空树则返回0
return 0;
else{
int dep1=BtreeDepth(BT->lchild );//递归调用逐层分析
int dep2=BtreeDepth(BT->rchild );
if(dep1>dep2)
return dep1+1;
else
return dep2+1;
}
}
int Leave(BiTNode *BT){//求二叉树中的叶子节点数
if (BT==NULL)
return 0;
else{
if(BT->lchild ==NULL && BT->rchild ==NULL)
return 1;
else
return(Leave(BT->lchild )+Leave(BT->rchild ));
}
}

这是我学数据结构时做的练习,用的是递归的形式,理解时需稍稍的想一下,但是函数这样写起来会相对比较的简单。

希望对你的问题有所帮助,同时也祝你的问题早日得到解决,呵呵!

热心网友 时间:2023-09-04 13:52

void ShowLeafNodeCount( BiTree node, int *count )
{
// 判断左边是否存在子节点
if( node->lchild )
ShowLeafNodeCount( node->lchild, count );
// 接着判断右边是否存在子节点
if( node->rchild )
ShowLeafNodeCount( node->rchild, count );
// 都没有的话,则为叶子结点,累加1
if( node->lchild==NULL && node->rchild==NULL )
++*count;
}

int LeafBiTree( BiTree t )
{
int c = 0;
ShowLeafNodeCount( t, &c );
return c;
}

热心网友 时间:2023-09-04 13:52

买本实验书配着教科书好好看吧,很简单的。学习数据结构要耐得住,静得下心来。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com