将根结点的左右结点看作 两个树的根结点,后序遍历(从叶子结点从下往上遍历)
两个树边遍历边比较。
左节点就左右根的后序遍历
右根结点就右左根的后序遍历来写
后序遍历(从叶子结点从下往上遍历)
/*** 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 {bool a=true;
public:bool isSymmetric(TreeNode* root) {bitree(root->left,root->right);
return a;}void bitree(TreeNode *rootl,TreeNode *rootr){if(rootl==NULL&&rootr==NULL)return ;if(rootl==NULL&&rootr!=NULL){ a=false;return ;}if(rootl!=NULL&&rootr==NULL){ a=false;return ;}bitree(rootl->left,rootr->right);bitree(rootl->right,rootr->left);if(rootl->val!=rootr->val)a=false;}
};