Leetcode 101. 对称二叉树

文章目录

  • 1.题目描述
  • 2.原题链接
  • 3.思路分析
  • 4.代码实现

1.题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。
示例1
Leetcode 101. 对称二叉树_第1张图片
示例2
Leetcode 101. 对称二叉树_第2张图片

2.原题链接

Leetcode 101. 对称二叉树

3.思路分析

左子树为空,右子树不为空,不对称,return false
左子树不为空,右子树为空,不对称 return false
左右子树都为空,对称,返回true

此时已经排除掉了有空树的情况,那么剩下的就是左右子树都不为空的情况
比较二叉树外侧是否对称:通过左子树的左孩子,右子树的右孩子来比较。
比较内测是否对称,通过左子树的右孩子和右子树的左孩子来比较 。
Leetcode 101. 对称二叉树_第3张图片

如果两侧都对称就返回true ,只要有一侧不对称就返回false

4.代码实现

 bool DFS( struct TreeNode * left ,struct TreeNode * right )
 {
      //左右子树 都为空 
      if( left ==NULL && right ==NULL)
       {
       return true ; 

       }
      //有一个为空 
        else if( left ==NULL || right ==NULL)
       {
            return false ; 
       }
       //都不为空 比较节点的值
        else if(left->val != right->val )
       {
            return false ;
       }
      
     
          return   DFS(left->left,right->right)//左子树的左孩子,右子树的右孩子
       && DFS(left->right ,right->left); //左子树的右孩子和右子树的左孩子
 }
bool isSymmetric(struct TreeNode* root)
{
       if( root==NULL) 
       return true ;
      
       return DFS ( root->left  ,root->right);
}

如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!

你可能感兴趣的:(leetcode,深度优先,算法)