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

Posted 小赵小赵福星高照~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之二叉树基础OJ练习对称二叉树相关的知识,希望对你有一定的参考价值。

对称二叉树

题目来源:对称二叉树

题目描述:

给定一个二叉树,检查它是否是镜像对称的。

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

以上是关于数据结构之二叉树基础OJ练习对称二叉树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构之二叉树的基础OJ练习二叉树的遍历

数据结构之二叉树基础OJ练习另一颗树的子树

数据结构之二叉树基础OJ练习检查两颗树是否相同

数据结构二叉树经典OJ练习

创作赢红包< 二叉树OJ题 >单值二叉树&&二叉树的最大深度&&翻转二叉树&&相同的树&&对称二叉树

数据结构——二叉树的基础练习题(单值二叉树,翻转二叉树,相同的树,对称二叉树,另一颗子树,二叉树的前序遍历)