1. 程式人生 > 其它 >力扣刷題之100. 相同的樹

力扣刷題之100. 相同的樹

技術標籤:力扣每日一題 | 記錄我的刷題記錄leetcode

題目簡述

給你兩棵二叉樹的根節點 p 和 q ,編寫一個函式來檢驗這兩棵樹是否相同。

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

示例 1:

在這裡插入圖片描述

輸入:p = [1,2,3], q = [1,2,3]
輸出:true

示例 2:

在這裡插入圖片描述

輸入:p = [1,2], q = [1,null,2]
輸出:false

示例 3:

在這裡插入圖片描述

輸入:p = [1,2,1], q = [1,1,2]
輸出:false

提示

  • 兩棵樹上的節點數目都在範圍 [0, 100] 內
  • -10^4 <= Node.val <= 10^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) { if(p==nullptr&q==nullptr)return true; else if(p==nullptr||q==nullptr)return false; else if(p->val!=q->val)return false; else return isSameTree(p->left,q->left)&&isSameTree
(p->right,q->right); } };