使用语言:C语言
题目思路:
- 第一层的根节点可以不用判断
- 每一次递归都将该树拆分为左树和右树
- 先判断左树和右树根节点是否一样,再判断左树和右树是否对称
- 判断两棵树是否对称可以使用之前的思路进行改写「Leetcode」100.相同的树
图片描述:
代码实现:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool _isSymmetric(struct TreeNode* t1, struct TreeNode* t2)//判断是否对称
{
if(t1==NULL && t2==NULL)
{
return true;
}
if(t1==NULL || t2==NULL)
{
return false;
}
if(t1->val != t2->val)
{
return false;
}
return _isSymmetric(t1->left,t2->right) && _isSymmetric(t1->right,t2->left);
}
bool isSymmetric(struct TreeNode* root)
{
if(root==NULL)
{
return true;
}
return _isSymmetric(root->left,root->right);
}