目录
题目要求:
本题要求实现一个函数,判断一棵二叉树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;
}
输入样例(对于图中给出的树):

输出样例:
在这里给出相应的输出。例如:
yes
输入样例(对于图中给出的树):

输出样例:
在这里给出相应的输出。例如:
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
本文介绍了一个用于判断二叉树是否对称的函数实现方法。通过对二叉树的递归遍历,比较左右子树的结构来确定整棵树是否满足对称条件。提供了完整的函数接口定义及一个示例性的测试程序。

8080

被折叠的 条评论
为什么被折叠?



