【数据结构】数二叉树叶子节点的数目(伪代码)

第一种:

int num=0;            //全局变量,赋初值为0,在函数里可以改

void CountLeaf(BiTree T)              //传入形参,指针T

{

if T{                   //T存在,T是传的参,肯定存在,直接进入if

if(!T->lchlid && !T->rchild)                     //T不存在左子树且T不存在右子树

num++;                          //num==0,++为1,也就只有根结点一个

countleaf(T->lchild);         //if不满足,说明存在左子树或者存在右子树,数左子树的根节点;

countleaf(T->rchild);        //数右子树的根结点

}

}              //整个CountLeaf()函数都在递归,数完根结点,数根结点的下一个左结点和右结点,再数根结点下一个左节点的下一个左节点和右结点

//num的数目主要是归的这个过程,当数到叶子结点时,不再往下递,开始结束分解过程,往函数传值

//Countleaf函数被调用后不用返回T值,所以用void修饰函数返回值。(表示不返回)

第二种:

Countleaf(BiTree T,int num)           //num设置为局部变量,只能在函数内部使用

{

        if T{              

                if(!T->lchild&&!T->rchlid)

                         num=Countleaf(T->lchild,num);            //这次的递归直接传值给形参num

                         num=Countleaf(T->rchlid,num);               

}

        return num;        //return是函数的返回值,指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过return语句返回。这里是指Countleaf函数被调用后要返回函数中形参num值,表示叶子结点的数目。

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值