【LeetCode刷題】-C++-簡單-100-相同的樹

Task:

在這裏插入圖片描述

思路與算算實現

對樹有個稍微的瞭解先,看代碼裏給的定義:
在這裏插入圖片描述
可以看出樹

  • 有值:val;
  • 有左右節點:left 和right;
  • 有形式:節點:結點值、左孩子、右孩子、

那麼題目要求就是兩個樹一樣,那就節點,左孩子,右孩子都一樣!

所以首先邊界檢查:
(1)兩個樹都是空的,那沒錯了就是一毛一樣;
(2)如果都不空且值還相等,那就用遞歸的形式再去判斷:這裏條件就是看這個節點的左子樹和右子樹是否一樣,就這樣一直遞歸到頁節點!
(3)如果不滿足(2)中的判定條件(都不爲空,並且值相等),那就說明出現異常不相等了,直接返回false;

代碼:

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

提交結果:
在這裏插入圖片描述

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