目录

Leetcode-hot-100-191.对称二叉树

Leetcode hot 100 191.对称二叉树

1.题目

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

示例 1:

https://i-blog.csdnimg.cn/img_convert/415f576edf331747bc6172b804facb43.png

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

https://i-blog.csdnimg.cn/img_convert/ee357de831a24165e733284761a1ee22.png

输入:root = [1,2,2,null,3,null,3]
输出:false

2.代码及解析

class Solution {

bool issametree(TreeNode* p,TreeNode* q){

if(p==nullptr||q==nullptr){

return p==q;

}

return p->val==q->val &&issametree(p->left,q->right)&& issametree(p->right,q->left);

}

public:

bool isSymmetric(TreeNode* root) {

return issametree(root->left,root->right);

}

};

代码逻辑

  • 递归终止条件 :

    • 如果两个节点都为空,返回 true
    • 如果其中一个节点为空,另一个不为空,返回 false
  • 递归过程 :

    • 比较当前两个节点的值。
    • 递归比较左子树的左节点和右子树的右节点。
    • 递归比较左子树的右节点和右子树的左节点。

示例

假设有以下二叉树:

复制

    1
   / \
  2   2
 / \ / \
3  4 4  3
  • 根节点的左子树和右子树都是 2 ,它们的值相等。
  • 左子树的左节点 3 和右子树的右节点 3 相等。
  • 左子树的右节点 4 和右子树的左节点 4 相等。
  • 因此,这棵树是对称的。