判斷是否爲子樹

class Solution {
public:
    /**
     * @param T1, T2: The roots of binary tree.
     * @return: True if T2 is a subtree of T1, or false.
     */
    bool isSubtree(TreeNode *T1, TreeNode *T2) {
        // write your code here
        bool result = false;
        if(T2 == NULL)
          return true;
        if(T1 == NULL)
          return false;
        if(T1->val == T2->val)
          result = theSame(T1, T2);
        if(!result)
          result = isSubtree(T1->left, T2);
        if(!result)
          result = isSubtree(T1->right, T2);
         
        return result;
    }
    
  
    
    bool theSame(TreeNode *T1, TreeNode *T2)
    {
        if(T1 != NULL && T2 != NULL)
        {
            if(T1->val != T2->val)
            {
                return false;
            }
            else
            {
                return theSame(T1->left, T2->left) &&
                theSame(T1->right, T2->right);
            }
        }
        else if(T1 != NULL && T2 == NULL)
           return false;
        else if(T1 == NULL && T2 != NULL)
           return false;
    }
    
    
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章