From df308e2d6f86b338747cf01ede9288ecda9dc97b Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Thu, 27 Feb 2025 23:57:52 +0800 Subject: [PATCH] feat: 100_same_tree --- 100_same_tree/main.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 100_same_tree/main.cpp diff --git a/100_same_tree/main.cpp b/100_same_tree/main.cpp new file mode 100644 index 0000000..c4a0540 --- /dev/null +++ b/100_same_tree/main.cpp @@ -0,0 +1,31 @@ +#include +using namespace std; + +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) { + function dfs = [&](TreeNode* p, TreeNode* q) -> bool { + // both p and q are null + if (!p && !q) return true; + + // one of p and q is null + if (!p || !q) return false; + + // the value of p and q are different + if (p->val != q->val) return false; + + return dfs(p->left, q->left) && dfs(p->right, q->right); + }; + + return dfs(p, q); + } +};