應用了上一題的結果
- 將樹進行對稱操作,也需用迭代法
- 判斷對稱後的樹與原樹是否相等(上題的函數)
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p==NULL&&q==NULL){
return true;
}
else if(p==NULL&&q!=NULL){
return false;
}
else if(p!=NULL&&q==NULL){
return false;
}
else{
if(p->val==q->val&&isSameTree(p->left,q->left)
&&isSameTree(p->right,q->right)){
return true;
}
else{
return false;
}
}
}
bool isSymmetric(TreeNode* root) {
TreeNode* tmp=ChangeToSymmetric(root);
return isSameTree(tmp,root);
}
TreeNode* ChangeToSymmetric(TreeNode* root) {
if(root==NULL){
return NULL;
}
else{
TreeNode* tmp=new TreeNode(root->val);
tmp->left=ChangeToSymmetric(root->right);
tmp->right=ChangeToSymmetric(root->left);
return tmp;
}
}
};