天天看點

Leetcode刷題筆記題解(C++):100. 相同的樹

Leetcode刷題筆記題解(C++):100. 相同的樹

思路:挨個去判斷是否相等

1.如果目前的節點都為空,則說明沒有子節點了,傳回true

2.如果目前的節點隻有一個為空,則傳回false

3.如果目前節點的值不相等,則傳回false

4.如果相等且還有子節點繼續向下判斷

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        //如果目前的節點都為空,則傳回true
        if(p==NULL&&q==NULL) return true;
        //如果目前隻有一個為空,則傳回false
        if(p==NULL||q==NULL) return false;
        //如果目前的兩個節點的值不相等
        if(p->val!=q->val)   return false;
        //對于子節點進行判斷
        return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    }
};