2. Agenda – Trees & Graphs
• Approach
• Trees
• Binary Tree
• Binary Search Tree
• Binary Heap
• Graph
• Traversal
• Search
• BFS
• DFS
• Questions
3. Approach
Trees and graphs questions typically come in one of two forms:
1. Implement a tree / find a node / delete a node / other well known
algorithm.
2. Implement a modification of a known algorithm.
5. Data Structure
Binary Tree
Binary Search Tree (Ordered/Sorted Binary Tree)
• Left child and descendent value < node itself
• Right child and descendent value > node itself
Binary Heap
• Each child of node value < node itself
Binary Tree Binary Search Tree Binary Heap
6. Binary Tree
Traversal
• Depth First traversal
• In-Order : Left child, Root, Right child (Used in BST)
• Pre-Order : Root, Left child, Right child
• Post-Order : Left child, Right child, Root
• Breadth First traversal
• Not for large tree. O(n). Memory intense.
• 100, 50, 150, 25, 75, 125, 175, 110
In-Order :
25, 50, 75, 100, 110, 125, 150, 175
Pre-Order :
100, 50, 25, 75,150, 125, 110,175
Post-Order :
25, 75, 50, 110, 125, 175, 150
7. Tree Traversal Exercise
• In-Order traversal sequence (left, root, right) :
A, B, C, D, E, F, G, H, I
• Pre-Order traversal sequence (root, left, right) :
F, B, A, D, C, E, G, I, H
• Post-Order traversal sequence (left, right, root) :
A, C, E, D, B, H, I, G, F
9. Search
Breadth First Search (BFS)
• Searching a node and all its children before proceeding to its siblings.
• Use Queue data structure as an implementation.
Depth First Search (DFS)
• Searching a node and its siblings before going on to any children.
• Use Stack data structure as an implementation.
• Tip 1 : Decide your search algorithm based on the scenario.
• Tip 2 : Avoid BFS in a large tree.
10. Question 1
Implement In-Order traversal of Binary Tree with numbers. One with
recursion, one without recursion.
http://youtu.be/2lxVhW5-GTk
http://mjtoolbox.wordpress.com/snippet/tree-traversal
11. Question 2
Given a binary tree, check whether it is Binary Search Tree or not.
This demonstrates Tree Traversal algorithm.
http://www.ardendertat.com/2011/10/10/programming-
interview-questions-7-binary-search-tree-check/
http://mjtoolbox.wordpress.com/snippet/tree-
traversal
12. Question 3
Given a binary tree of integers, print it in level order. The output will contain
space between the numbers in the same level, and new line between
different levels.
Output should be :
1
23
456
This demonstrates Breadth First tree traversal algorithm.
http://www.ardendertat.com/2011/12/05/programming-interview-questions-
20-tree-level-order-print/
13. Question 4 (Extra)
Given the root of a binary search tree and 2 numbers min and max, trim the
tree such that all the numbers in the new tree are between min and max
(inclusive). The resulting tree should still be a valid binary search tree. So, if
we get this tree as input and min value as 5 and max value as 13, then the
resulting binary search tree should be:
This will demonstrate tree traversal algorithm and deletion.
http://www.ardendertat.com/2012/01/17/programming-interview-questions-
26-trim-binary-search-tree/