Breadth First Search (BFS)
Do we already know about what actually BFS is? if not then don’t need to feel bad just read the whole article and visit our previous article on Breadth First Search for better understanding. BFS is a level order traversal in which we visit the nodes of a binary tree from left to right at every level.
By the use of a Queue data structure, we find the level order traversal. We start from root then we insert root into BFS and insert all neighbors of that node to queue. After that pop the node from the queue and add it to BFS if it is not visited and add it’s all neighbor (unvisited) to queue. Repeat it till the size of the queue is not equal to null.
Depth First Search (DFS)
Are we also aware of what actually DFS is? You can visit our previous article on Depth First Search. DFS of a BT is three types of traversal:
- Preorder Traversal
- Inorder Traversal
- Postorder Traversal
Algorithm: Preorder(root): Step:1 Print the data of the Node. Step:2 Move to the left side of the node(traverse left-subtree). Step:3 Move to the right side of the node(traverse right-subtree).
Algorithm: Inorder(root): Step:1 Move to the left side of the node(traverse left-subtree). Step:2 Print the data of the Node. Step:3 Move to the right side of the node(traverse right-subtree).
Algorithm: Postorder(root): Step:1 Move to the left side of the node(traverse left-subtree). Step:2 Move to the right side of the node(traverse right-subtree). Step:3 Print the data of the Node.
Difference between BFS and DFS of a binary tree
Type of data structure used
In BFS we use a queue type data structure and in DFS we use a stack type data structure.
In BFS we use a queue to store the elements of the level so maximum space used in BFS is O(w) where w is the maximum element in one level. In DFS we use stack and follow the concept of depth. So, the maximum height of the tree is taking maximum space to evaluate. So space complexity of DFS is O(H) where H is the height of the tree.
The time complexity of both the cases will be O(N+E) where N denotes total nodes in BT and E denote total edges in BT.
Searching a node nearest to the root node
For getting the best result we use BFS for search such type of nodes that is nearest to the root node because it follows level order traversal.
Searching a node away from the root node
For getting the best result we use DFS in this case because it follows the depth concept.
BFS meaning Breadth-first search and DFS meaning Depth-first search.
Type of Data Structure used
BFS used Queue type data structure and DFS used Stack type data structure.
BFS is a vertex-based algorithm and DFS is an edge-based algorithm.
BFS is slower than DFS.