题目来源:对称二叉树
题目描述:
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
解题思路:
判断一个二叉树是不是镜像对称,也是需要用到分治的思想,判断一颗二叉树是否对称,相当于判断它的左右子树是不是镜像对称,判断两个左右子树是不是对称,需要判断左根节点的左孩子和另一个右根节点的右孩子的值是不是相等,以及左根节点的右孩子和右根节点的左孩子是不是相等。
代码如下:
bool _isSymmetric(struct TreeNode* root1, struct TreeNode* root2)
{
if(root1 == NULL && root2==NULL)
return true;
if(root1==NULL || root2==NULL)
return false;
//两个都不为空
if(root1->val!=root2->val)
return false;
return _isSymmetric(root1->left,root2->right)
&& _isSymmetric(root1->right,root2->left);
}
bool isSymmetric(struct TreeNode* root)
{
if(root==NULL)
{
return true;
}
return _isSymmetric(root->left,root->right);
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/attemptendeavor/article/details/120384763
内容来源于网络,如有侵权,请联系作者删除!