Symmetric Tree: Given the root
of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
Example 1:


Input: root = [1,2,2,3,4,4,3] Output: true
Example 2:


Input: root = [1,2,2,null,3,null,3] Output: false
Constraints:
- The number of nodes in the tree is in the range
[1, 1000]
. -100 <= Node.val <= 100
Symmetric Tree Solutions
✅Time: O(n)
✅Space: O(h)
C++
class Solution {
public:
bool isSymmetric(TreeNode* root) {
return isSymmetric(root, root);
}
private:
bool isSymmetric(TreeNode* p, TreeNode* q) {
if (!p || !q)
return p == q;
return p->val == q->val &&
isSymmetric(p->left, q->right) &&
isSymmetric(p->right, q->left);
}
};
Java
class Solution {
public boolean isSymmetric(TreeNode root) {
return isSymmetric(root, root);
}
private boolean isSymmetric(TreeNode p, TreeNode q) {
if (p == null || q == null)
return p == q;
return p.val == q.val && isSymmetric(p.left, q.right) && isSymmetric(p.right, q.left);
}
}
Python
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
def isSymmetric(p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
if not p or not q:
return p == q
return p.val == q.val and \
isSymmetric(p.left, q.right) and \
isSymmetric(p.right, q.left)
return isSymmetric(root, root)
Watch Tutorial
Checkout more Solutions here