原題
思路
主要就是判斷一個二叉樹是否左右對稱,可以通過一個遞歸函數判斷,將當前二叉樹設爲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));
}
}
};