- The wasted NULL links in the binary tree storage representation can be replaced by threads.
- A binary tree is threaded according to particular traversal order. e.g.: Threads for the inorder traversals of tree are pointers to its higher nodes, for this traversal order.
- If left link of node P is null, then this link is replaced by the address of its predecessor.
- If right link of node P is null, then it is replaced by the address of its successor
- Because the left or right link of a node can denote either structural link or a thread, we must somehow be able to distinguish them.
- Method 1:- Represent thread a –ve address.
- Method 2:- To have a separate Boolean flag for each of left and right pointers, node structure for this is given below,
- LTHREAD = true = Denotes leaf thread link
- LTHREAD = false = Denotes leaf structural link
- RTHREAD = true = Denotes right threaded link
- RTHREAD = false = Denotes right structural link
- Head node is simply another node which serves as the predecessor and successor of first and last tree nodes. Tree is attached to the left branch of the head node
| Advantages | Disadvantages |
|---|---|
| Inorder traversal is faster than unthreaded version as stack is not required | Threaded trees are unable to share common subtrees |
| Effectively determines the predecessor and successor for inorder traversal, for unthreaded tree this task is more difficult | If –ve addressing is not permitted in programming language, two additional fields are required |
| A stack is required to provide upward pointing information in tree which threading provides | Insertion into and deletion from threaded binary tree are more time consuming because both thread and structural link must be maintained |
| It is possible to generate successor or predecessor of any node without having over head of stack with the help of threading |
Fully In-threaded binary tree of given binary tree