How to find siblings of a tree?

Posted by smallB on Programmers See other posts from Programmers or by smallB
Published on 2012-02-05T17:00:21Z Indexed on 2012/08/28 3:51 UTC
Read the original article Hit count: 279

Filed under:
|

On my interview for an internship, I was asked following question:

On a whiteboard write the simplest algorithm with use of recursion which would take a root of a so called binary tree (so called because it is not strictly speaking binary tree) and make every child in this tree connected with its sibling.

So if I have:

     1 
   /   \   
  2     3   
 / \     \   
4   5     6   
/          \ 
7           8

then the sibling to 2 would be 3, to four five, to five six and to seven eight.

I didn't do this, although I was heading in the right direction. Later (next day) at home I did it, but with the use of a debugger. It took me better part of two hours and 50 lines of code. I personally think that this was very difficult question, almost impossible to do correctly on a whiteboard.

How would you solve it on a whiteboard? How to apprehend this question without using a debugger?

© Programmers or respective owner

Related posts about c++

Related posts about interview