Little Rabbit and the XOR Tree: How to solve this with a little modification

How can I solve this problem. With a little modification that, the tree is unweighted and every node i is associated with some value A[i]. Now calculate the max(D xor A[i]) , such that i is any node in the path between 2 given nodes u,v. There are as many as 10^5 nodes and 10^5 queries each query contains u, v, and D.

I can solve it by finding the lca = LCA(u,v) and then check for each node between u to lca and v to lca. But the problem is that I have to traverse through every node between u and v. So in worst case if u = leftmost leaf and v = rightmost leaf in the tree. My solution won’t work. How can I solve it more efficiently.

1 Like