2022年10月24日 星期一

[100] Same Tree

啊真不愧是easy ?!
但頭還是昏昏的,  and 跟or 還是會寫錯呢~~~(攤手)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool check(struct TreeNode* p, struct TreeNode* q)
{
    if (p == NULL && q == NULL)
        return true;
    else if ((p==NULL && q != NULL)|| (p != NULL && q == NULL))
        return false;
    if ((p->val) != (q->val))
        return false;
    return ( check(p->left , q-> left) && check(p->right , q-> right));
   
}

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    return check(p,q);
}

覺得別人真的寫的很精簡XD 偷貼一下. 
(然後就證明我真的不是鬼才啊屋屋屋屋屋)

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    if(p && q){
        return p->val == q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
    }else if(p || q){
        return false;
    }
    else{
        return true;
    }
}

然後發現自己寫的很贅啊XD 不就用一個function 對自己recursive 就好了?!
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if (p == NULL && q == NULL)
return true;
else if ((p==NULL && q != NULL)|| (p != NULL && q == NULL))
return false;
if ((p->val) != (q->val))
return false;
return ( isSameTree(p->left , q-> left) && isSameTree(p->right , q-> right));
}

沒有留言:

張貼留言