leetcode 101.对称二叉树

 学习这部分还是要多画图,多思考


101.对称二叉树

题目

给你一个二叉树的根节点 root , 检查它是否轴对称。

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文字 和 画图 分析

   明确结束条件和继续递归条件

判断是否对称,我们一定是拿左子树和右子树进行对比,(这里的根节点反而没有那么重要)

如下图,这是遍历思路

图1:

leetcode 101.对称二叉树_第1张图片

图2:

leetcode 101.对称二叉树_第2张图片

从图我们可以知道:

结束条件有以下几种情况:

  1. 当左子树的值不等于右子树的值,返回 false
  2. 当左子树和右子树都为空 ,返回 true (如图一3,4号)
  3. 当左子树和右子树只有一个为空 ,返回 false (如图二2号)

(结束条件有先后顺序,为了防止是空树现象,一定要先验证这个)

从图中可以明白,左子树和右子树一定要同时进行比较,用递归的话参数一定是两个(就是左子树和右子树的节点)

(这里leetcode给的参数只有一个,所以我们得创建一个函数,用它帮我们返回真假)


代码

bool  _isSymmetric(struct TreeNode* Left,struct TreeNode* Right) 
{
      if(Left == NULL && Right == NULL)
      {
          return true;
      }
      if(Left == NULL || Right == NULL)
      {
          return false;
      }
      if(Left->val != Right->val)
      {
          return false;
      }

      return _isSymmetric(Left->left,Right->right) 
        &&   _isSymmetric(Left->right,Right->left);

}
bool isSymmetric(struct TreeNode* root) 
{
   return _isSymmetric(root->left,root->right) ;
}

你可能感兴趣的:(leetcode,c语言,数据结构)