【数据结构填空题】关于递归求二叉树度为2的数目【C/C++编程】

【数据结构填空题】关于递归求二叉树度为2的数目【C/C++编程】

前言:
昨天跟同学研究这道题目;然后一直在想,想出来了很多种,但是都是由于第二个if的原因最后递归调用不到.
因为我是从低向上去想这道题目的,然后填空的.最后还是经过不断努力还是想出来了.

题目如下:
二又链表类型定义:
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
},BiTNode,*BiTree;
算法binode (BiTree T)实现计算二叉树T中度为2的节点数目.
请在空确处填写合适的内容,使其成为完整的算法。
int binode (BiTree T)/计算二叉树T中度为2的结点的数目/
{
if(NULL==T)return (1);
if((2))return1;
return binode(T->lchild)+binode(3)
}

题目:二又链表类型定义:

typedef struct BiTNode{
  TElemType data;
  struct BiTNode *lchild,*rchild;
},BiTNode,*BiTree;

/*
算法binode (BiTree T)实现计算二叉树T中度为2的节点数目.
请在空确处填写合适的内容,使其成为完整的算法。
*/
int binode (BiTree T)/*计算二叉树T中度为2的结点的数目*/
{
   if(NULL==T)return1);
   if(2))return1;
  return binode(T->lchild)+binode(3}

图片版题目
我们先画个二叉树作参考(度为2的的数目为2个),本二叉树的先序遍历为A—B—D—E—C—F—G
度为2的的数目为2个

int binode(Bitree T) {
	if (T == NULL) return 0;
	if (T->lchild != NULL && T->rchild != NULL &&
	T->lchild->lchild == NULL && T->lchild->rchild == NULL &&
        T->rchild->lchild == NULL  && T->rchild->rchild == NULL) return 1;
	printf("\t%c", T->data);
	return B(T->lchild) + B(T->rchild)+(T->rchild!=NULL && T->lchild!=NULL? 1:0);
}
  • 第一空:0
  • 第二空:T->lchild != NULL && T->rchild != NULL &&T->lchild->lchild == NULL && T->lchild->rchild == NULL &&T->rchild->lchild == NULL && T->rchild->rchild == NULL
    注:第二空也可直接写false
  • 第三空:(T->rchild)+(T->rchild!=NULL && T->lchild!=NULL? 1:0)

运行结果
运行结果

在让我们测试另一颗二叉树

这是一棵有3个度为2的节点
先序遍历为A—B—D—E—C—F—G—H

度为2的的数目为3个

运行结果
运行结果

以上为本人的答案;其实计算二叉树度为2的数目,我们一般这样写

int binode(Bitree T) {
	if (T == NULL) return 0;
	if(T->lchild != NULL &&T->rchild != NULL)  return B(T->lchild)+B(T->rchild)+1;
	return B(T->lchild)+B(T->rchild);
}

具体我就不分析,大家自己研究一下吧~
我也要学习去了,考研人,考研魂,考研都是人上人.
加油

写于:2021年11月13日上午09点
作者QQ:420318184
邮箱:fy@0fy0.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飛之宇

你的支持是我们的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值