相同的樹

Old Tony發表於2020-09-27

給定兩個二叉樹,編寫一個函式來檢驗它們是否相同。

如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。

示例 1:

輸入: 1 1
/ \ /
2 3 2 3

    [1,2,3],   [1,2,3]

輸出: true
示例 2:

輸入: 1 1
/
2 2

    [1,2],     [1,null,2]

輸出: false
示例 3:

輸入: 1 1
/ \ /
2 1 1 2

    [1,2,1],   [1,1,2]

輸出: false

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/same-tree
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

遞迴解決問題:
從根節點開始判斷每一個樹的左右節點是否相同,遍歷到根節點。遞迴的終止條件有當兩個數同時為空返回true,一棵樹為空時返回false。

/**

  • 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) {
        if(p==nullptr&&q==nullptr) return true;
        else if(p==nullptr) return false;
        else if(q==nullptr) return false;
        else{
            if(p->val==q->val)
            {
               return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
            }
            else {
                return false;
            }
        }
    }
};

相關文章