題目描述:
解題思路:此題和上題有點類似,同樣遞歸解決,isSymmetry(TreeNode * p,TreeNode * q) 表示如果以p的 以右孩子爲根的子樹 和 q的 以左孩子爲根的子樹對稱並且 p的 以左孩子爲根的子樹 和 q的 以右孩子爲根的子樹對稱,那麼以p爲根的子樹和以q爲根的子樹對稱。
代碼如下:
class Solution {
public:
bool isSymmetric(TreeNode * root) {
if(root == NULL) return true; //注意判空樹情況,不然會報錯
if(isSymmetry(root -> left,root -> right) == true) return true;
return false;
}
private:
bool isSymmetry(TreeNode * p,TreeNode * q){
if(p == NULL && q == NULL) return true;
if(p == NULL || q == NULL) return false;
if(p -> val != q -> val) return false;
if(isSymmetry(p -> left,q -> right) && isSymmetry(p -> right,q -> left)) return true;
return false;
}
};