Since a binary tree with $N$ nodes has $N+1$ NULL pointers (across leaves), half the space allocated in a binary search tree for pointer information is wasted. Suppose that if a node has a NULL left child, we make its left child point to its in-order predecessor, and if a node has a NULL right child, we make its right child point to its in-order successor. This is known as a threaded tree and the extra pointers are called threads. In what way this implementation helpful? Can any one provide useful information.
Threaded trees make in-order tree traversal a little faster, because you you have guaranteed O(1) time to access the next node. This is opposed to a regular binary tree where it would take O(lg n) time, because you have to "climb" up the tree and then back down.
The trade off is that you're opting to determine what the next in-order node is when you insert into the tree, rather than when you're doing the traversal.
Threaded trees make it possible to perform inorder-traversal without the use of stack or recursion. The threads make it possible to back-up to higher levels. Thre is a catch: we should be able to distinguish threads from ordinary links, and the obvious way to do that is to use a bit for each link, to mark the threads. However, there are (very inefficient) techniques to check threads vs. edges in unmarked trees.