开发者社区> 问答> 正文

求编写递归算法,统计二叉树中度为1的节点数目C语言

求编写递归算法,统计二叉树中度为1的节点数目C语言

展开
收起
知与谁同 2018-07-21 11:45:06 4348 0
3 条回答
写回答
取消 提交回答
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    二叉树中度为1的就是叶子即使求叶子节点数
    void left(BiTree T)
    {
    if ( T )
    {if ((!T->lchild)&& (!T->rchild))
    count++;
    left(T->lchild);
    left(T->rchild);
    }
    }
    其中可以将count初始化为0即 int count=0;作为全局变量
    我已经用过的不会错滴
    望对你有帮助。。
    2019-07-17 22:54:41
    赞同 展开评论 打赏
  • 代码少一点的话,看这个
    void Degree(BTree *t,int &count)

    {
    if(t)

    {
    if((t->left&&!t->right)||(!t->left&&t->right))

    count++;

    Degree(t->left,count);

    Degree(t->right,count);

    }
    }
    2019-07-17 22:54:41
    赞同 展开评论 打赏
  • int Degree(BTree * t)
    {
    if(!t) //根节点为空
    return 0;
    else if (t->lchild == NULL && t->rchild == NULL)//只有根节点
    return 0;
    else if (t->lchild != NULL && t->rchild == NULL)//有左孩子没有右孩子
    return 1+ Degree(t->lchild);
    else if (t->lchild == NULL && t->rchild != NULL)//有右孩子没有左孩子
    return 1 + Degree(t->rchild);
    else if (t->lchild != NULL && t->rchild != NULL)//左右孩子都有
    return Degree(t->lchild) + Degree(t->rchild);
    }
    手打,希望对你有帮助。
    2019-07-17 22:54:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载