二叉树 | 对称二叉树

文章目录

  • 问题:对称二叉树
    • 解题思路
    • C++代码

问题:对称二叉树

题目链接
二叉树 | 对称二叉树_第1张图片

解题思路

采用递归的思路,对于树t1和t2,t1和t2是镜像要满足

  • 头节点值相等
  • t1的左子树和t2的右子树是镜像
  • t1的右子树和t2的左子树是镜像

C++代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        return isMirror(root, root);
    }

    bool isMirror(TreeNode *t1, TreeNode *t2){//判断树t1和t2是否为镜像
        if(!t1 && !t2) return true;//都为NULL
        if(!t1 || !t2) return false;//只有一个为NULL
        //如果头节点值相等,t1的左子树和t2的右子树是镜像,t1的右子树和t2的左子树是镜像,则t1和t2是镜像
        return (t1->val == t2->val) && isMirror(t1->left, t2->right) && isMirror(t1->right, t2->left);
    }
};

你可能感兴趣的:(数据结构)