原题
思路
主要就是判断一个二叉树是否左右对称,可以通过一个递归函数判断,将当前二叉树设为p,与之相同的另外一个二叉树设为q,通过递归比较p->left和q->right,p->right和q->left,最后得出二叉树是否左右对称
code
/**
* 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) {
//这里将root复用即可
return Equal(root, root);
}
bool Equal(TreeNode* p, TreeNode* q)
{
if (!p && !q)
{
return true;
}
else if (!p && q || p && !q || p->val != q->val)
{
return false;
}
else
{
return (Equal(p->left, q->right) && Equal(p->right, q->left));
}
}
};