目录
题目要求:
本题要求实现一个函数,判断一棵二叉树T是否是对称二叉树。
函数接口定义:
int isSymmetric(BiTree T)
解释接口参数:其中T
用户传入的参数。如果T
是对称二叉树,函数返回1,否则返回0
其中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); /* 创建一棵二叉树,已实现 */
int isSymmetric(BiTree T); //请实现该函数
int main()
{
BiTree T;
CreateTree(T);
if (isSymmetric(T))
cout << "yes" ;
else cout << "no";
return 0;
}
输入样例(对于图中给出的树):
![](https://img-blog.csdnimg.cn/858d0851f87f44b6a0b4cfc696240d22.png)
输出样例:
在这里给出相应的输出。例如:
yes
输入样例(对于图中给出的树):
![](https://img-blog.csdnimg.cn/6a3479e1c6f84e29974872069dca4f84.png)
输出样例:
在这里给出相应的输出。例如:
no
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/11/26
- 星期六下午14:00
随便写写的答案:
int isSymmetric(BiTree T)
{
if(T)
{
if((!T->lchild && T->rchild)||(!T->rchild && T->lchild))
return 0;
else if(T->lchild && T->rchild)
return isSymmetric(T->lchild)+isSymmetric(T->rchild);
else
return 1;
}
return 0;
}
整体思路:
- 通过递归判断是否两边都有孩子,若没有则直接返回0
- 若两边都有则调用自己继续判断
- 最后即可确定返回值 不为0则可返回1