Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Check if Two Trees are Symmetric in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean for two binary trees to be symmetric?
Two binary trees are symmetric if one is the mirror image of the other. This means the left subtree of one tree is the mirror of the right subtree of the other tree, and vice versa.
Click to reveal answer
beginner
What is the base case when checking if two trees are symmetric?
If both trees are empty (null), they are symmetric. If only one is empty, they are not symmetric.
Click to reveal answer
intermediate
How do you compare nodes when checking for symmetry?
Compare the values of the current nodes. Then recursively check if the left child of the first tree is symmetric with the right child of the second tree, and the right child of the first tree is symmetric with the left child of the second tree.
Click to reveal answer
intermediate
Why is recursion a good approach to check tree symmetry?
Because symmetry involves comparing subtrees in a mirrored way, recursion naturally allows checking smaller parts of the trees step-by-step until reaching the base case.
Click to reveal answer
intermediate
What is the time complexity of checking if two trees are symmetric?
The time complexity is O(n), where n is the number of nodes in the trees, because each node is visited once during the comparison.
Click to reveal answer
What should you return if both input trees are null when checking symmetry?
AError
BFalse
CNull
DTrue
When comparing two nodes for symmetry, which children do you compare?
ALeft child of first tree with right child of second tree
BRight child of first tree with right child of second tree
CLeft child of first tree with left child of second tree
DNone of the above
If one tree node is null and the other is not, are the trees symmetric?
AOnly if values match
BYes
CNo
DDepends on tree height
What is the main technique used to check if two trees are symmetric?
ARecursion
BSorting
CIteration
DHashing
What is the time complexity of checking symmetry for two trees with n nodes?
AO(1)
BO(n)
CO(log n)
DO(n^2)
Explain step-by-step how to check if two binary trees are symmetric.
Think about mirror image and recursion base cases.
You got /6 concepts.
    Describe why recursion is suitable for checking tree symmetry and what the base cases are.
    Consider how trees are structured and how recursion explores them.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does it mean for two binary trees to be symmetric?
      easy
      A. They have the same root value only.
      B. They have the same number of nodes.
      C. They are mirror images of each other around their center.
      D. They have identical left subtrees only.

      Solution

      1. Step 1: Understand symmetry in trees

        Two trees are symmetric if one is the mirror reflection of the other around the center.
      2. Step 2: Compare structure and node values

        Both structure and node values must match in a mirrored way for symmetry.
      3. Final Answer:

        They are mirror images of each other around their center. -> Option C
      4. Quick Check:

        Symmetry means mirror image = C [OK]
      Hint: Symmetric trees mirror each other exactly [OK]
      Common Mistakes:
      • Thinking same number of nodes means symmetric
      • Only comparing root values
      • Ignoring structure differences
      2. Which of the following is the correct JavaScript function signature to check if two trees are symmetric?
      easy
      A. function checkSymmetric(tree) {}
      B. function isSymmetric(tree1, tree2) {}
      C. function symmetricCheck(tree1, tree2, tree3) {}
      D. function isSymmetric(tree1) {}

      Solution

      1. Step 1: Identify parameters needed

        To check symmetry between two trees, we need two tree inputs.
      2. Step 2: Match function signature

        Only the function with two parameters for two trees matches the requirement.
      3. Final Answer:

        function isSymmetric(tree1, tree2) {} -> Option B
      4. Quick Check:

        Two trees need two parameters = B [OK]
      Hint: Two trees need two parameters in function [OK]
      Common Mistakes:
      • Using only one tree parameter
      • Adding unnecessary third parameter
      • Wrong function naming
      3. What will be the output of the following code snippet?
      function isMirror(t1, t2) {
        if (!t1 && !t2) return true;
        if (!t1 || !t2) return false;
        return (t1.val === t2.val) && isMirror(t1.left, t2.right) && isMirror(t1.right, t2.left);
      }
      
      const tree1 = { val: 1, left: { val: 2, left: null, right: null }, right: { val: 3, left: null, right: null } };
      const tree2 = { val: 1, left: { val: 3, left: null, right: null }, right: { val: 2, left: null, right: null } };
      
      console.log(isMirror(tree1, tree2));
      medium
      A. TypeError
      B. false
      C. undefined
      D. true

      Solution

      1. Step 1: Check base cases for null nodes

        Both trees have matching null nodes at corresponding mirror positions, so base cases return true.
      2. Step 2: Compare node values and recursive calls

        Root values match (1), left of tree1 (2) matches right of tree2 (2), right of tree1 (3) matches left of tree2 (3). All recursive calls return true.
      3. Final Answer:

        true -> Option D
      4. Quick Check:

        Mirror check returns true for symmetric trees [OK]
      Hint: Mirror check compares opposite children recursively [OK]
      Common Mistakes:
      • Confusing left and right children in recursion
      • Ignoring null node base cases
      • Assuming order of children doesn't matter
      4. Identify the bug in this code snippet that checks if two trees are symmetric:
      function isMirror(t1, t2) {
        if (!t1 && !t2) return true;
        if (!t1 || !t2) return false;
        return (t1.val === t2.val) && isMirror(t1.left, t2.left) && isMirror(t1.right, t2.right);
      }
      medium
      A. It compares left with left and right with right instead of mirror sides.
      B. It does not check for null nodes.
      C. It uses assignment instead of comparison.
      D. It returns true too early without recursion.

      Solution

      1. Step 1: Analyze recursive calls for symmetry

        The function compares t1.left with t2.left and t1.right with t2.right, which checks for identical trees, not mirror symmetry.
      2. Step 2: Correct recursive calls for mirror check

        To check symmetry, t1.left should be compared with t2.right and t1.right with t2.left.
      3. Final Answer:

        It compares left with left and right with right instead of mirror sides. -> Option A
      4. Quick Check:

        Mirror check swaps sides in recursion = A [OK]
      Hint: Mirror check swaps left and right children in recursion [OK]
      Common Mistakes:
      • Comparing same sides instead of mirror sides
      • Missing null checks
      • Using assignment (=) instead of equality (===)
      5. Given two binary trees, write a function to check if they are symmetric. Which approach correctly solves this problem?
      hard
      A. Use a queue to iteratively compare nodes from left of one tree and right of the other.
      B. Compare only the root nodes of both trees.
      C. Check if both trees have the same height only.
      D. Traverse both trees in preorder and compare node values in order.

      Solution

      1. Step 1: Understand iterative symmetry check

        Using a queue, we can compare nodes from the left side of one tree with the right side of the other tree iteratively.
      2. Step 2: Why other methods fail

        Preorder traversal compares nodes in the same order, not mirror order. Height check or root-only check ignores structure and values.
      3. Final Answer:

        Use a queue to iteratively compare nodes from left of one tree and right of the other. -> Option A
      4. Quick Check:

        Iterative mirror check uses queue swapping sides = D [OK]
      Hint: Use queue to compare opposite sides iteratively [OK]
      Common Mistakes:
      • Using preorder traversal without mirroring
      • Checking only height or root values
      • Ignoring iterative approach benefits
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard