Problem of the day
You have been given the Inorder Traversal and Level Order Traversal of a Binary Tree of integers. Your task is to calculate the height of the Binary tree without constructing it.
The height of the binary tree is the number of edges in the longest path from the root node to any leaf node in the tree. In case the tree has only one node, the height is taken to be 0.
The first line of input contains an integer ‘T’ denoting the number of test cases to run. Then the test case follows.
The first line of each test case contains an integer ‘N’ denoting the number of nodes of the binary tree.
The second line of each test case contains ‘N’ single space-separated integers, denoting the Inorder traversal of the binary tree.
The third line of each test case contains ‘N’ single space-separated integers, denoting the Level Order traversal of the binary tree.
Output Format:
For each test case, print the height of the binary tree.
Output for every test case will be printed in a separate line.
Note:
You do not need to print anything; it has already been taken care of. Just implement the given function.
1 <= T <= 100
1 <= N <= 3000
1 <= inorder[i] <= N
1 <= levelOrder[i] <= N
Time Limit: 1 sec
1
5
4 2 5 1 3
1 2 3 4 5
2
The binary tree(rooted at node 1) represented by the above inorder and level order traversals is-
We can see that the height of the above binary tree is 2.
1
7
7 4 2 1 5 3 6
1 2 3 4 5 6 7
3
Try to use properties of Inorder and Level order Traversal of the tree.
O(N^2), where N denotes the number of nodes of the binary tree.
As we are iterating over the complete level order traversal and for each node, we are finding its position in the inorder traversal, so the time complexity will be O(N^2).
O(N), where N denotes the number of nodes in the binary tree.
As the last layer can have at most N/2 nodes(in case of a complete binary tree), the maximum number of nodes in the queue at any time will be N/2.