You have been given an arbitrary binary tree and a node of this tree. You need to find the inorder successor of this node in the tree.
The inorder successor of a node in a binary tree is that node that will be visited immediately after the given node in the inorder traversal of the tree. If the given node is visited last in the inorder traversal, then its inorder successor is NULL.
The inorder traversal of a binary tree is the traversal method in which for any node its left subtree is visited first, then the node itself, and then the right subtree.
Note1. Each node is associated with a unique integer value.
2. The node for which the successor is to be found is guaranteed to be part of the tree.
The first line contains a single integer 'T' representing the number of test cases.
The first line of each test case will contain the values of the nodes of the tree in the level order form ( -1 for NULL node) Refer to the example for further clarification.
The second and the last line of each test case will contain the value of the node for which the inorder successor is to be found.
Example:
Consider the binary tree:

The input of the tree depicted in the image above will be like:
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:
For each test case, print a single line that contains the value of the successor node, or NULL if it does not have an inorder successor.
The output of each 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
2 <= 'N' <= 10 ^ 3
1 <= 'NODEVALUE' <= 10 ^ 9
Where 'N' is the number of nodes and 'NODEVALUE' is the value of the node.
Time Limit: 1sec.
1
1 2 3 4 5 -1 -1 -1 -1 -1 -1
2
5
The tree can be represented as follows:

The inorder traversal of this tree will be 4 2 5 1 3.
As the root is ‘1’, we first visit its left subtree which is rooted at 2, thus then we visit the left subtree of ‘2’, which is rooted at ‘4’. The left subtree of ‘4’ is NULL, so we visit the root i.e ‘4’. This process is continued.
So the order would be 4 -> 2 -> 5 -> 1 -> 3.
Clearly after the node with value = 2, the node with value = 5 is visited. So, 5 is the answer
1
10 5 6 -1 -1 -1 -1
6
NULL
Store the nodes in the order of inorder traversal
O(N), where ‘N’ is the number of non-NULL nodes.
As we are traversing each node once, the complexity is proportional to the size of the tree.
O(N), where ‘N’ is the number of non-NULL nodes.
The maximum size of the array used to store the inorder traversal will be equal to the number of nodes in the tree.