Symmetrical Binary Tree

Moderate
0/80
Average time to solve is 25m
profile
Contributed by
28 upvotes
Asked in companies
ArcesiumHCL TechnologiesUnacademy

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.
Detailed explanation ( Input/output format, Notes, Images )
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.
Sample Input 1:
1 2 2 3 4 4 3 -1 -1 -1 -1 -1 -1 -1 -1


Sample Output 1:
YES


Explanation for sample 1:
As we can see in the image, the original tree is the same as the mirrored tree.

sym_tree


Sample Input 2:
1 2 3 4 -1 -1 -1 -1 -1


Sample output 2:
NO
Explanation for sample input 2:
As we can see in the image, the original tree is not the same as the mirrored tree.

sym_tree


Expected time complexity :
The expected time complexity is O(n).


Constraints:
0 <= 'n' <= 10000
1 <= Node data <= 10 ^ 6

Time Limit: 1 second
Hint

Think of a recursive solution.

Approaches (2)
Recursion
  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.
Time Complexity

O(n), where 'n' is the number of nodes in the given binary tree.

In the worst case, we are traversing the entire binary tree once. Hence the overall time complexity will be O(n).

Space Complexity

O(n), where 'n' is the number of nodes in the given binary tree.

The number of recursive calls depends on the height of the input tree. In the worst case, the tree can be linear. Hence the overall space complexity will be O(n).

Video Solution
Unlock at level 3
(75% EXP penalty)
Code Solution
(100% EXP penalty)
Symmetrical Binary Tree
Full screen
Console