LeetCode:二叉树——对称二叉树

Posted 正义的伙伴啊

tags:

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

OJ链接👇

对称二叉树
这道题思路很重要,首先我们要选择两个在同一层的对称节点,这两个节点分别在根节点的两侧,我们设这两个对称的节点为left和rright。

在当前层的分为四种情况:

  • left和right都不为空,此时需要比较left和right的值的大小,如果值不相同那么整棵二叉树就不是对称的了,如果相同就需要看下一层是否是堆成的
  • left和right有一个为空另一个不为空,这个二叉树肯定不是对称的
  • left和right都为空,当前节点是对称的

在整个判断过程中,判断的对称只能判断当前节点是对称的,而判断不对称就说明整棵树都不对称。

进入下一层时由于当前层的left和right是对称的,所以下一层也需要对称!

/**
 * Definition for a binary tree node.
 * struct TreeNode 
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) 
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) 
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) 
 * ;
 */
class Solution 
public:
    bool fun(TreeNode* l,TreeNode*r)
    
        if(l==nullptr && r==nullptr)
        
            return true;
        
        else if(l!=nullptr && r!=nullptr)
        
            if(l->val!=r->val)
            return false;
            else
                return fun(l->left,r->right)&&fun(l->right,r->left);
            
        
        else
        
            return false;
        
    
    bool isSymmetric(TreeNode* root) 
        return fun(root->left,root->right);
    
;

以上是关于LeetCode:二叉树——对称二叉树的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:二叉树——对称二叉树

LeetCode-对称二叉树

LeetCode-101-对称二叉树

Leetcode 101.对称二叉树

leetcode-101-对称二叉树

LeetCode101. 对称二叉树