目录
题目要求:
本题要求实现一个函数,求二叉树中度为1的结点个数。
函数接口定义:
int du1(BiTree T);
解释接口参数:其中T
用户传入的参数。函数返回T
树度为1的结点个数。
其中BiTree
结构定义如下:
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
裁判测试程序样例:
#include<iostream>
using namespace std;
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateTree(BiTree &T); //创建一棵二叉树T,已实现
int du1(BiTree T); // 要实现的函数
int main()
{
BiTree M;
int count;
CreateTree(M); //创建一棵二叉树M
count = du1(M);
cout << "该二叉树度为1的结点个数:" << count;
return 0;
}
输入样例(对于图中给出的树):
输出样例:
在这里给出相应的输出。例如:
该二叉树度为1的结点个数:3
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/11/26
- 星期六下午14:00
随便写写的答案:
int du1(BiTree T)
{
if(T)
{
if((T->lchild && !T->rchild) ||(T->rchild && !T->lchild))
{
return 1 + du1(T->lchild);
}
else
return du1(T->lchild) + du1(T->rchild);
}
return 0;
}
整体思路:
- 树的度是如下定义的:有根树T中,结点x的子女数目称为x的度。
- 即:在树中,结点有几个分叉,度就是几。
- 所以进行判断是否只有单个孩子进行递归