Perhaps the simplest way is to do a normal inorder traversal and, as you visit nodes, keep track of the last one visited in an external (global or class) variable. When you visit a new node and the last node has a NULL right child pointer, you can update it with the new node. If the new node has a NULL left child pointer, you can update it with the last node.
// UNTESTED! // Last tree node visited in order static NODE *last; // local recursive tree walk static void do_enthreading(NODE *tree) { if (tree->left) do_enthreading(tree->left); else { tree->left_child_is_thread = TRUE; tree->left = last; } if (last && last->right == NULL) { last->right_child_is_thread = TRUE; last->right = tree; } last = tree; if (tree->right) do_enthreading(tree->right) } // Start the recursion and clean up afterward. void enthread_tree(NODE *tree) { if (tree) { last = NULL; do_enthreading(tree); last->right_child_is_thread = TRUE; } } On Nov 25, 5:55 am, kumar raja <rajkumar.cs...@gmail.com> wrote: > How to convert a given binary tree into threaded binary tree?? > what is the algorithm... > > -- > Regards > Kumar Raja > M.Tech(SIT) > IIT Kharagpur, > 10it60...@iitkgp.ac.in -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.