数据结构之二叉树基础OJ练习对称二叉树

x33g5p2x  于2021-10-07 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(488)

对称二叉树

题目来源:对称二叉树

题目描述:
给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [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);
}

相关文章