• + 1 comment
    Here  it is in java:
                int numberOfNodes = indexes.length;
        int numOfQueries= queries.length;
    
        int[][] result =new int[numOfQueries][numberOfNodes];
    
        Node root = new Node(1,1);
        Node curr = root;
    
        Queue<Node> nodes = new LinkedList<>();
        nodes.offer(curr);
    
        //tree creation
        int N = 0;
        while (N<numberOfNodes)
        {
            curr =nodes.poll();
    
            int leftNode = indexes[N][0];
            int rightNode = indexes[N][1];
    
            curr.left = leftNode == -1?null:new Node(leftNode,curr.depth+1);
            curr.right = rightNode == -1?null:new Node(rightNode,curr.depth+1);
    
                        //Now we are going to add the nodes for next iteration to create node
    
            if (curr.left!=null && curr.left.data != -1)
                nodes.offer(curr.left);
            if(curr.right!=null && curr.right.data != -1)
                nodes.offer(curr.right);
            N++;
                        }//loop over
    
        }
    
    • + 0 comments

      Excellent idea of using Queue to track Nodes. Helped me solve this problems correctly.