Skip to content

101. Symmetric Tree

Difficulty: Easy

LeetCode Problem View on GitHub


101. Symmetric Tree

Easy


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

 

Follow up: Could you solve it both recursively and iteratively?


Solution

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    private boolean flag;
    public boolean isSymmetric(TreeNode root) {
        flag = true;
        if (root.left == null && root.right == null || root == null) return true;
        solve(root, root);
        return flag;
    }
    private void solve(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 == null) return;
        if (root1 == null && root2 != null) {
            flag = false;
            return;
        }
        if (root2 == null && root1 != null) {
            flag = false;
            return;
        }
        if (root1.val != root2.val) {
            flag = false;
            return;
        }

        solve(root1.left, root2.right);
        solve(root1.right, root2.left);
    }
}

Complexity Analysis

  • Time Complexity: O(?)
  • Space Complexity: O(?)

Approach

Detailed explanation of the approach will be added here