思路
采用递归,先将树分为两株,即根节点的左子树和柚子树。然后利用函数,依次比较左子树和柚子树是否对称(左子树的左子树是否等于柚子树的柚子树等条件)
/**
* 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) {
if(root==NULL){return true;}
return isLeftandRightCommon(root->left,root->right);
}
bool isLeftandRightCommon(TreeNode* A,TreeNode* B){
if(A==NULL&&B==NULL){return true;}
if(A==NULL){return false;}
if(B==NULL){return false;}
if(A->val!=B->val){return false;}
return isLeftandRightCommon(A->left,B->right)&&isLeftandRightCommon(A->right,B->left);
}
};
(这个代码片好酷炫啊)
运行结果
points
没啥要写的,每次自己做出来树的递归题就觉得好开心啊