Binary Search Tree
Binary Search Tree
Introduction
• Preorder traversal
60, 41, 16, 25, 53, 46, 42, 55, 74, 65, 63, 62, 64, 70
• Inorder traversal
16, 25, 41, 42, 46, 53, 55, 60, 62, 63, 64, 65, 70, 74
• Postorder traversal
25, 16, 42, 46, 55, 53, 41, 62, 64, 63, 70, 65, 74, 60
Traversals
• Preorder traversal
16, 8, 25, 42, 62, 49, 58
• Inorder traversal
8, 16, 25, 42, 49, 58, 62
• Postorder traversal
8, 58, 49, 62, 42, 25, 16
void preorder(node *temp)
{ if (temp != NULL)
{ printf("%d", temp->data);
preorder(temp->lchild);
preorder(temp->rchild);
}}
preorder(41) → 41
preorder(16) → 16 41, 16, 25, 53, 46, 42, 55
preorder(NULL) → ×
preorder(25) → 25
preorder(NULL) → ×
preorder(NULL) → ×
preorder(53) → 53
preorder(46) → 46
preorder(42) → 42
preorder(NULL) → ×
preorder(NULL) → ×
preorder(NULL) → ×
preorder(55) → 55
preorder(NULL) → ×
preorder(NULL) → ×
16, 25, 41, 42, 46, 53, 55
Maximum (rightmost)
Minimum (leftmost)
Successor and Predecessor
• Successor is next node in
inorder traversal.
• Predecessor is previous
node in inorder traversal.
16, 25, 41, 42, 46, 53, 55, 60, 62, 63, 64, 65, 70, 74
• Three cases,
i. Node to be removed has no children.
ii. Node to be removed has one child.
iii. Node to be removed has two children.
Node to be removed has no children
2
3
Delete 17
19
TREE-DELETE-WITHOUT-PARENT(T.root,k)
1. x = T.root
2. if x == NIL
3. return x
4. if k < x.key
5. x.left = TREE-DELETE-WITHOUT-PARENT(x.left,k)
6. else if k > x.key
7. x.right = TREE-DELETE-WITHOUT-PARENT(x.right,k)
8. else
9. if x.left == NIL
10. temp = x.right
11. delete x
12. return temp
13. else if x.right == NIL
14. temp = x.left
15. delete x
16. return temp
17. temp = TREE-MINIMUM(x.right)
18. x.key = temp.key
19. x.right = TREE-DELETE-WITHOUT-PARENT(x.right,temp.key)
20. return x
Question…
15, 18, 6, 7, 17, 3, 4, 13, 9, 20, 2
A, B,
C, D, E G, H, I
Inorder and Preorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
F
G, H, I
A C, D, E
Inorder and Preorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
F
G, H, I
A
C, D, E
Inorder and Preorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
F
G, H, I
A D
C E
Inorder and Preorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
F
B G
A D
C E H, I
Inorder and Preorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
F
B G
A D I
C E H
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
A, B,
C, D, E G, H, I
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
G
A, B,
C, D, E
H, I
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
G
A, B,
C, D, E
I
H
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
B G
A C, D, E H
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
B G
D I
A C E H
Inorder and Postorder
Inorder: A, B, C, D, E, F, G, H, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
B G
A D I
C E H
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
A,
B, C, D,
E, G, H, I
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
G, H, I
A, C,
D, E
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
G, H, I
A
C, D, E
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
G, H, I
A D
C, E
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
G, H, I
A D
C E
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
F
B G
A D
H, I
C E
Preorder and Postorder
Preorder: F, B, A, D, C, E, G, I, H [PARENT LEFT RIGHT]
Postorder: A, C, E, D, B, H, I, G, F [LEFT RIGHT PARENT]
Preorder and Postorder (Full Tree)
Preorder: F, B, A, D, C, E, H, G, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, G, I, H, F [LEFT RIGHT PARENT]
F
G, H, I
A D
C E
Preorder and Postorder (Full Tree)
Preorder: F, B, A, D, C, E, H, G, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, G, I, H, F [LEFT RIGHT PARENT]
F
B H
A D
G, I
C E
Preorder and Postorder (Full Tree)
Preorder: F, B, A, D, C, E, H, G, I [LEFT PARENT RIGHT]
Postorder: A, C, E, D, B, G, I, H, F [LEFT RIGHT PARENT]
F
B H
A D G I
C E