101. 对称二叉树

  1. 题目链接

  2. 解题思路

    • 检查一个二叉树是否轴对称,其实和根结点无关,而是和其左右子树有关。
    • 左子树头等于右子树头,然后递归调用,「左子树的右儿子」要等于「右子树的左儿子」并且「左子树的左儿子」要等于「右子树的左儿子」。
  3. 代码

    /**
    * 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 isSymmetric(TreeNode* head1, TreeNode *head2) {
    if (head1 == nullptr && head2 == nullptr) {
    return true;
    }
    if (head1 == nullptr) {
    return false;
    }
    if (head2 == nullptr) {
    return false;
    }
    if (head1->val != head2->val) {
    return false;
    }
    return isSymmetric(head1->left, head2->right) && isSymmetric(head1->right, head2->left);
    }
    bool isSymmetric(TreeNode* root) {
    return isSymmetric(root->left, root->right);
    }
    };
posted @   ouyangxx  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示