KEMBAR78
Threaded Binary Tree | PPTX
Presented to:
Md. Shamsujjoha
 Senior Lecturer of CSE department
 East West University
Presented by:
 Md. Khabbab Hossain Tusher
 Date:03/04/2016
Threaded binary tree
A binary search tree in which each node uses an otherwise-empty left
child link to refer to the node's in-order predecessor and an empty
right child link to refer to its in-Order Successor.
Definition
Slide 1
A Simple Binary Tree
A
B
D
E
C
GF
Slide 2
A
B C
Null D Null Null E Null Null G NullNull F Null
Slide 3
Threaded binary tree
Threaded Binary Tree
 In above binary tree, there are 8 null pointers & actual 6
pointers.
 In all there are 14 pointers.
 We can generalize it that for any binary tree with n nodes
there will be (n+1) null pointers and 2n total pointers.
 The objective here to make effective use of these null
pointers.
 A. J. perils & C. Thornton jointly proposed idea to make
effective use of these null pointers.
 According to this idea we are going to replace all the null
pointers by the appropriate pointer values called threads.
Slide 4
 And binary tree with such pointers are called threaded tree.
 In the memory representation of a threaded binary tree, it is necessary
to distinguish between a normal pointer and a thread.
Slide 5
Threaded Binary Tree:
One-Way
 We will use the right thread only in this case.
 To implement threads we need to use in-order successor of the tree
Slide 6
Threaded Binary Tree:
One-Way
A
B C
Null D Null E Null G NullNull F
Inorder Traversal of The tree: D, B, E, A, F, C, G
Slide 7
Two way Threaded Tree/Double Threads
 Again two-way threading has left pointer of the first node and right
pointer of the last node will contain the null value. The header nodes
is called two-way threading with header node threaded binary tree.
Slide 8
A
B
D
Inorder Traversal of The tree: D, B, E, A, F, C, G
E
C
F G
Dangling
Dangling
Slide 9
• Dangling can be solved as follows
 Introduce a header node.
 The left and right pointer of the header node are treated as normal
links and are initialized to point to header node itself.
Slide 10
A
B
D
Inorder Traversal of The tree: D, B, E, A, F, C, G
E
C
F G
Head
Slide 11
Structure of Thread BT
Node structure
For the purpose of our evaluation algorithm, we assume each
node has five fields:
LTag Left data Right RTag
We define this node structure in C as:
Struct Node{
int data;
struct Node *Left,*Right;
bool Ltag;
boolRtag;
};
Slide 12
L.Tag L.Child head R.child
R.Tag
1 A 1
1 1
0 D 0 0 E 0 0 F 0 0 G 0
1 B 1 1 C 1
Inorder Traversal of The tree: D B E A F C G
Slide 13
Threaded Tree Traversal
• We start at the leftmost node in the tree, print it, and follow
its right thread
• If we follow a thread to the right, we output the node and
continue to its right.
• If we follow a link to the right, we go to the leftmost node,
print it, and continue.
Slide 14
8
75
3
1
6
Start at leftmost node, print it
Output
1
9
Slide 15
8
75
3
1
6
Follow thread to right, print node
Output
1
3
9
Slide 16
8
75
3
1
6
Follow link to right, go to leftmost
node and print
Output
1
3
5
9
Slide 17
8
75
3
1
6
Follow thread to right, print node
Output
1
3
5
6
9
Slide 18
8
75
3
1
6
Follow link to right, go to
leftmost node and print
Output
1
3
5
6
7
9
Slide 19
8
75
3
1
6
9
Follow thread to right, print node
Output
1
3
5
6
7
8
Slide 20
8
75
3
91
6
Follow link to right, go to
leftmost node and print
Output
1
3
5
6
7
8
9
Slide 21
void inOrder(struct Node *root)
{
struct Node *cur = leftmost(root);
while (cur != NULL)
 {
 printf("%d ", cur->data);

 // If this node is a thread node,
then go to
// inorder successor
 if (cur->rightThread)
 cur = cur->right;
 else // Else go to the leftmost child
in right subtree
 cur = leftmost(cur->right);
 }
 }
8
75
3
1
6
9
Slide 22
Threaded Binary Trees
 In threaded binary trees, The
null pointers are used as thread.
 We can use the null pointers
which is a efficient way to use
computers memory.
 Traversal is easy. Completed
without using stack or
reccursive function.
 Structure is complex.
 Insertion and deletion takes
more time.
Normal Binary Trees
 In a normal binary trees, the null
pointers remains null.
 We can’t use null pointers so it is a
wastage of memory.
 Traverse is not easy and not
memory efficient.
 Less complex than Threaded binary
tree.
 Less Time consuming than
Threaded Binary tree.
Comparison of Threaded BT
Slide 23
 Inserting a node to Threaded Binary Tree:
Inserting a node X as the right child of a nodes.
1st Case:
- If G has an empty right subtree, then the insertion is simple
Slide 24
A
B
D
Inserting X as a right child of G
E
C
F G
Head
X
New inorder traversal is: D,B,E,A,F,C,G,X
Slide 25
2nd Case:
If the right subtree of C is not empty, then this right child is made
the right child of X after insertion.
Slide 26
A
B
D
New Inorder Traversal of The tree: D, B, E, A, F, C, X,G
E
F
G
Head
x
C
Slide 27
Advantage
 1. By doing threading we avoid
the recursive method of
traversing a Tree , which doesn’t
use of stack and consumes a lot
of memory and time .
 2 . The node can keep record of
its root .
 3. Backward Traverse is
possible.
 4. Applicable in most types of
the binary tree.
Disadvantage
 1. This makes the Tree more
complex .
 2. More prone to errors when
both the child are not present &
both values of nodes pointer to
their ancestors.
 3. Lot of time consumes when
deletion or insertion is
performed.
Threaded binary tree
Slide 28
 Same as any kind of Binary Tree.
 Used in search and Traverse
based work
APPLICATIONS
Slide 29
Conclusion
 Excellent concept in modern computer science.
 Saves Time and memory.
 Traversal and search are very efficient.
 Insertion and deletion are not so efficient.
Slide 30
References
 http://www.geeksforgeeks.org/inorder-tree-traversal-without-
recursion-and-without-stack/
 http://www.delorie.com/gnu/docs/avl/libavl_183.html
 http://www.math-
cs.gordon.edu/courses/cs321/lectures/threaded.html
 https://prezi.com/1yitau0wnwlg/threaded-binary-tree-in-data-
structures/
 http://stackoverflow.com/questions/6744770/confusion-with-
threaded-binary-tree
 Various Text Book for data structure.
Contacts us
:tkhabbab@gmail.com/
khabbabcse@ewu.edu.bd

Threaded Binary Tree

  • 1.
    Presented to: Md. Shamsujjoha Senior Lecturer of CSE department  East West University Presented by:  Md. Khabbab Hossain Tusher  Date:03/04/2016
  • 2.
  • 3.
    A binary searchtree in which each node uses an otherwise-empty left child link to refer to the node's in-order predecessor and an empty right child link to refer to its in-Order Successor. Definition Slide 1
  • 4.
    A Simple BinaryTree A B D E C GF Slide 2
  • 5.
    A B C Null DNull Null E Null Null G NullNull F Null Slide 3 Threaded binary tree
  • 6.
    Threaded Binary Tree In above binary tree, there are 8 null pointers & actual 6 pointers.  In all there are 14 pointers.  We can generalize it that for any binary tree with n nodes there will be (n+1) null pointers and 2n total pointers.  The objective here to make effective use of these null pointers.  A. J. perils & C. Thornton jointly proposed idea to make effective use of these null pointers.  According to this idea we are going to replace all the null pointers by the appropriate pointer values called threads. Slide 4
  • 7.
     And binarytree with such pointers are called threaded tree.  In the memory representation of a threaded binary tree, it is necessary to distinguish between a normal pointer and a thread. Slide 5
  • 8.
    Threaded Binary Tree: One-Way We will use the right thread only in this case.  To implement threads we need to use in-order successor of the tree Slide 6
  • 9.
    Threaded Binary Tree: One-Way A BC Null D Null E Null G NullNull F Inorder Traversal of The tree: D, B, E, A, F, C, G Slide 7
  • 10.
    Two way ThreadedTree/Double Threads  Again two-way threading has left pointer of the first node and right pointer of the last node will contain the null value. The header nodes is called two-way threading with header node threaded binary tree. Slide 8
  • 11.
    A B D Inorder Traversal ofThe tree: D, B, E, A, F, C, G E C F G Dangling Dangling Slide 9
  • 12.
    • Dangling canbe solved as follows  Introduce a header node.  The left and right pointer of the header node are treated as normal links and are initialized to point to header node itself. Slide 10
  • 13.
    A B D Inorder Traversal ofThe tree: D, B, E, A, F, C, G E C F G Head Slide 11
  • 14.
    Structure of ThreadBT Node structure For the purpose of our evaluation algorithm, we assume each node has five fields: LTag Left data Right RTag We define this node structure in C as: Struct Node{ int data; struct Node *Left,*Right; bool Ltag; boolRtag; }; Slide 12
  • 15.
    L.Tag L.Child headR.child R.Tag 1 A 1 1 1 0 D 0 0 E 0 0 F 0 0 G 0 1 B 1 1 C 1 Inorder Traversal of The tree: D B E A F C G Slide 13
  • 16.
    Threaded Tree Traversal •We start at the leftmost node in the tree, print it, and follow its right thread • If we follow a thread to the right, we output the node and continue to its right. • If we follow a link to the right, we go to the leftmost node, print it, and continue. Slide 14
  • 17.
    8 75 3 1 6 Start at leftmostnode, print it Output 1 9 Slide 15
  • 18.
    8 75 3 1 6 Follow thread toright, print node Output 1 3 9 Slide 16
  • 19.
    8 75 3 1 6 Follow link toright, go to leftmost node and print Output 1 3 5 9 Slide 17
  • 20.
    8 75 3 1 6 Follow thread toright, print node Output 1 3 5 6 9 Slide 18
  • 21.
    8 75 3 1 6 Follow link toright, go to leftmost node and print Output 1 3 5 6 7 9 Slide 19
  • 22.
    8 75 3 1 6 9 Follow thread toright, print node Output 1 3 5 6 7 8 Slide 20
  • 23.
    8 75 3 91 6 Follow link toright, go to leftmost node and print Output 1 3 5 6 7 8 9 Slide 21
  • 24.
    void inOrder(struct Node*root) { struct Node *cur = leftmost(root); while (cur != NULL)  {  printf("%d ", cur->data);   // If this node is a thread node, then go to // inorder successor  if (cur->rightThread)  cur = cur->right;  else // Else go to the leftmost child in right subtree  cur = leftmost(cur->right);  }  } 8 75 3 1 6 9 Slide 22
  • 25.
    Threaded Binary Trees In threaded binary trees, The null pointers are used as thread.  We can use the null pointers which is a efficient way to use computers memory.  Traversal is easy. Completed without using stack or reccursive function.  Structure is complex.  Insertion and deletion takes more time. Normal Binary Trees  In a normal binary trees, the null pointers remains null.  We can’t use null pointers so it is a wastage of memory.  Traverse is not easy and not memory efficient.  Less complex than Threaded binary tree.  Less Time consuming than Threaded Binary tree. Comparison of Threaded BT Slide 23
  • 26.
     Inserting anode to Threaded Binary Tree: Inserting a node X as the right child of a nodes. 1st Case: - If G has an empty right subtree, then the insertion is simple Slide 24
  • 27.
    A B D Inserting X asa right child of G E C F G Head X New inorder traversal is: D,B,E,A,F,C,G,X Slide 25
  • 28.
    2nd Case: If theright subtree of C is not empty, then this right child is made the right child of X after insertion. Slide 26
  • 29.
    A B D New Inorder Traversalof The tree: D, B, E, A, F, C, X,G E F G Head x C Slide 27
  • 30.
    Advantage  1. Bydoing threading we avoid the recursive method of traversing a Tree , which doesn’t use of stack and consumes a lot of memory and time .  2 . The node can keep record of its root .  3. Backward Traverse is possible.  4. Applicable in most types of the binary tree. Disadvantage  1. This makes the Tree more complex .  2. More prone to errors when both the child are not present & both values of nodes pointer to their ancestors.  3. Lot of time consumes when deletion or insertion is performed. Threaded binary tree Slide 28
  • 31.
     Same asany kind of Binary Tree.  Used in search and Traverse based work APPLICATIONS Slide 29
  • 32.
    Conclusion  Excellent conceptin modern computer science.  Saves Time and memory.  Traversal and search are very efficient.  Insertion and deletion are not so efficient. Slide 30
  • 33.
    References  http://www.geeksforgeeks.org/inorder-tree-traversal-without- recursion-and-without-stack/  http://www.delorie.com/gnu/docs/avl/libavl_183.html http://www.math- cs.gordon.edu/courses/cs321/lectures/threaded.html  https://prezi.com/1yitau0wnwlg/threaded-binary-tree-in-data- structures/  http://stackoverflow.com/questions/6744770/confusion-with- threaded-binary-tree  Various Text Book for data structure.
  • 35.