diff --git a/101_symmetric_tree/main.cpp b/101_symmetric_tree/main.cpp new file mode 100644 index 0000000..d301b90 --- /dev/null +++ b/101_symmetric_tree/main.cpp @@ -0,0 +1,26 @@ +#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 isSymmetric(TreeNode *root) { + if (root == nullptr) return true; + return isSymmetric(root->left, root->right); + } + + bool isSymmetric(TreeNode *left, TreeNode *right) { + if (!left && !right) return true; + if (!left || !right) return false; + if (left->val != right->val) return false; + return isSymmetric(left->left, right->right) && isSymmetric(left->right, right->left); + } +}; \ No newline at end of file