root
, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false
提示:
[1, 1000]
内-100 <= Node.val <= 100
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode() : val(0), left(nullptr), right(nullptr) {} 8 * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 9 * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} 10 * }; 11 */ 12 class Solution { 13 public: 14 bool isMirro(TreeNode *t1, TreeNode *t2) { 15 // 两节点均为空时,对称 16 if (t1 == nullptr && t2 == nullptr) { 17 return true; 18 } 19 // 两节点其中一个为空不对称 20 if (t1 == nullptr || t2 == nullptr) { 21 return false; 22 } 23 // 两节点值相同且左节点的左子树等于右节点的右子树,左节点的右子树等于右节点的左子树为对称 24 if (t1->val == t2->val) { 25 return isMirro(t1->left, t2->right) && isMirro(t1->right, t2->left); 26 } 27 return false; 28 } 29 bool isSymmetric(TreeNode* root) { 30 return isMirro(root, root); 31 } 32 };