Last Updated: 15 Dec, 2020

Symmetrical Binary Tree

Moderate
Asked in companies
SamsungArcesiumHCL Technologies

Problem statement

You have been given a Binary Tree having 'n' nodes.


A Symmetric tree is a binary tree whose mirror image is the same as the original tree.


Find out whether the given tree is symmetric or not.


Example :
Input: Let the binary tree be:

sym_tree

Output: YES

Explanation: As we can see in the image, the original tree is the same as the mirrored tree.
Input format :
The first line of input contains elements in the level order form for the first binary tree. The line consists of values of nodes separated by a single space. In case a node is null, we take -1 in its place.
Input format explanation:
The level order input for the tree depicted in the below image would be 

alt text

1
2 3
4 -1 5 6
-1 7 -1 -1 -1 -1
-1 -1

The sequence will be put together in a single line separated by a single space. Hence, for the above-depicted tree, the input will be given as:

1 2 3 4 -1 5 6 -1 7 -1 -1 -1 -1 -1 -1

Explanation :
Level 1 :
The root node of the tree is 1

Level 2 :
Left child of 1 = 2
Right child of 1 = 3

Level 3 :
Left child of 2 = 4
Right child of 2 = null (-1)
Left child of 3 = 5
Right child of 3 = 6

Level 4 :
Left child of 4 = null (-1)
Right child of 4 = 7
Left child of 5 = null (-1)
Right child of 5 = null (-1)
Left child of 6 = null (-1)
Right child of 6 = null (-1)

Level 5 :
Left child of 7 = null (-1)
Right child of 7 = null (-1)

The first not-null node (of the previous level) is treated as the parent of the first two nodes of the current level. The second not-null node (of the previous level) is treated as the parent node for the next two nodes of the current level, and so on.
The input ends when all nodes at the last level are null (-1).


Output format:
The output contains "YES" or "NO" depending on whether the tree is symmetric or not.


Note :
You do not need to print anything; it has already been taken care of. Just implement the given function.

Approaches

01 Approach

  1. If the root of the tree is NULL, then simply return true.
  2. Then return true, if the left subtree and the right subtree of the root are a mirror reflection of each other, else return false.

Two trees are a mirror reflection of each other if the following condition holds:

  1. The root nodes of both trees must have the same value.
  2. The left subtree of the left tree and the right subtree of the right tree must be a mirror reflection of each other.
  3. The right subtree of the left tree and the left subtree of the right tree must be a mirror reflection of each other.

02 Approach

  1. If the root of the tree is NULL, then simply return true.
  2. We use a queue data structure in which we initially push the root node two times.
  3. Then, we pop two nodes from the queue, say node1 and node2. We push the left child of node1 and right child of node2 to the queue, respectively. Similarly, we push the right child of node1 and left child of node2 to the queue.
  4. If at any point, the consecutive nodes’ values in the queue are not equal, then we return false as the tree is not symmetric.
  5. Repeat steps 2, 3, and 4 until the queue is not empty.
  6. At last return true.