[leetecode ] [C++]101.Symmetric Tree

應用了上一題的結果

  1. 將樹進行對稱操作,也需用迭代法
  2. 判斷對稱後的樹與原樹是否相等(上題的函數)
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;
      }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章