Is there a way without using extra space to find LCA of nary tree.
I did it using a string saving the preorder of both the nodes and finding common prefix
Is there a way without using extra space to find LCA of nary tree.
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If nodes “know” their depth – or you’re willing to allow the space to compute the depth of your nodes, you can back up from the lower node to the same depth of the higher node, and then go up one level at a time until they meet.
Depends on what “extra space” means in this context. You can do it with one integer – the difference in depths of the two nodes. Is that too much space?
Another possibility is given you don’t have a parent pointer, you can use pointer reversal – every time you traverse a pointer, remember the location from which you came, remember the pointer you will next traverse, and then just before the next pointer traversal, replace that pointer with the back pointer. You have to reverse this when going up the tree to restore it. This takes the space of one pointer as a temporary. And another integer to keep the depth as you work your way down and up. Do this synchronously for the two nodes you seek, so that you can work your way back up from the lower one until you’re at the same height in both traversals, and then work back up from both until you’re at the common node. This takes three extra pieces of memory – one for each of the current depths, one for the temporary used during a pointer reversal. Very space efficient. Is it worth it?