What is Threaded Binary Tree?
It is a binary tree where leaf node is threaded towards both the inorder predecessor or successor (left or right) means all right null pointers will point to inorder successor or all left null pointers will point to inorder predecessor.
A binary tree is threaded by making all right child pointers that would normally be null point to the inorder successor of the node (if it exists), and all left child pointers that would normally be null point to the inorder predecessor of the node
Why do we need Threaded Binary Tree?
 Binary trees have a lot of wasted space: the leaf nodes each have 2 null pointers. We can use these pointers to help us in inorder traversals.
 Threaded binary tree makes the tree traversal faster since we do not need stack or recursion for traversal
ref: https://upload.wikimedia.org/wikipedia/commons/7/7a/Threaded_tree.svg
Types of threaded binary trees:

Single Threaded:

Each leaf node is threaded towards either the inorder predecessor or successor (left or right) means all right null pointers will point to an inorder successor OR all left null pointers will point to an inorder predecessor.


Double threaded:
 Each leaf node is threaded towards both the inorder predecessor and successor (left and right) means all right null pointers will point to an inorder successor AND all left null pointers will point to an inorder predecessor.