本文共 1020 字,大约阅读时间需要 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* root) { return ismirror(root,root); } bool ismirror(TreeNode* p, TreeNode* q){ if(p==nullptr && q==nullptr) return true; if(p==nullptr && q!=nullptr) return false; if( p!=nullptr&& q==nullptr) return false; if(p->val==q->val) return ismirror(p->left,q->right) && ismirror(p->right,q->left); return false; } };
转载地址:http://qbfdi.baihongyu.com/