0% found this document useful (0 votes)
10 views9 pages

4 Types of Tree Traversal Algorithms

The document provides an overview of tree traversal algorithms, focusing on their definitions, classifications, and implementations. It categorizes tree traversal into Depth-First Search (DFS) with variants like Inorder, Preorder, and Postorder, and Breadth-First Search (BFS) with Level Order Traversal. The article includes practical coding examples in Java and emphasizes the importance of understanding these algorithms for programming and software development.

Uploaded by

gokukadhir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views9 pages

4 Types of Tree Traversal Algorithms

The document provides an overview of tree traversal algorithms, focusing on their definitions, classifications, and implementations. It categorizes tree traversal into Depth-First Search (DFS) with variants like Inorder, Preorder, and Postorder, and Breadth-First Search (BFS) with Level Order Traversal. The article includes practical coding examples in Java and emphasizes the importance of understanding these algorithms for programming and software development.

Uploaded by

gokukadhir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

4 Types of Tree Traversal Algorithms

Everything you need to know about tree traversal in 7 mins (with


animations)

DFS & BFS Algorithms || Designed by


Anand K Parmar

If you are a pro programmer or working in the Software Industry for years then

this topic may seem to you very trivial. But the use-cases of such algorithms and the

different variants of that may create confusion in beginners mind. Therefore, I

attempted to put all you need to know about Tree Traversal in this single article (with

animations).

“Animation can explain whatever the mind of man can conceive. This facility

makes it the most versatile and explicit means of communication yet devised for

quick mass appreciation.”― Walt Disney

This article is not only about theories around such algorithms, but you will also learn

how to implement those algorithms through code.

Timeline
1. Tree Data Structure

2. Tree Traversal — Introduction

3. Let’s dive in — Practical Guide

4. Inorder Traversal

5. Preorder Traversal

6. Postorder Traversal

7. Level Order Traversal

8. Final Notes

1. Tree Data Structure


Before jumping into the tree traversal algorithms, let’s define Tree as a data structure

first. That will help you to grasp the concepts in a meaningful way.

Tree is a hierarchical data structure which stores the information naturally in the

form of hierarchy unlike linear data structures like, Linked List, Stack, etc. A tree

contains nodes(data) and connections(edges) which should not form a cycle.

Following are the few frequently used terminologies for Tree data structure.

Node — A node is a structure which may contain a value or condition, or represent a

separate data structure.

Root — The top node in a tree, the prime ancestor.

Child — A node directly connected to another node when moving away from the root,

an immediate descendant.

Parent — The converse notion of a child, an immediate ancestor.

Leaf — A node with no children.

Internal node — A node with at least one child.

Edge — The connection between one node and another.

Depth — The distance between a node and the root.

Level — the number of edges between a node and the root + 1

Height — The number of edges on the longest path between a node and a descendant

leaf.
Breadth — The number of leaves.

Sub Tree — A tree T is a tree consisting of a node in T and all of its descendants in T.

Binary Tree — is a tree data structure in which each node has at most two children,

which are referred to as the left child and the right child.

Binary Search Tree — is a special type of binary tree which has the following

properties.

 The left subtree of a node contains only nodes with keys lesser than the

node’s key.

 The right subtree of a node contains only nodes with keys greater than

the node’s key.

 The left and right subtree each must also be a binary search tree.

Note: For the sake of simplicity, we will use Binary Tree as an example to

understand Tree Traversal Algorithms. But those algorithms can be generalised to

other types of tree, as well.

2. Tree Traversal — Introduction


“In computer science, tree traversal (also known as tree search) is a form of

graph traversal and refers to the process of visiting (checking and/or updating)

each node in a tree data structure, exactly once. Such traversals are classified by the

order in which the nodes are visited.” — Wikipedia

The definition of Wikipedia is self-explanatory to understand what Tree Traversal

mean. But I want to elaborate more about the last line of the definition, which will

help us to understand the types of Tree Traversal and how they are different.

Tree Traversal Algorithms can be classified broadly in the following two categories by

the order in which the nodes are visited:

 Depth-First Search (DFS) Algorithm: It starts with the root node

and first visits all nodes of one branch as deep as possible of the chosen

Node and before backtracking, it visits all other branches in a similar


fashion. There are three sub-types under this, which we will cover in

this article.

 Breadth-First Search (BFS) Algorithm: It also starts from the

root node and visits all nodes of current depth before moving to the

next depth in the tree. We will cover one algorithm of BFS type in the

upcoming section.

3. Let’s dive in — Practical Guide


It’s time to understand the concept in a practical way. I will use Java Programming

Language to explain the code. But these algorithms can be coded in your preferred

programming language the same way we will do in Java.

Below is the blueprint of our Node class which will act as the atomic member of the

Tree Data Structure. We will call it TreeNode, which is holding data as an integer

value, left and right children of the same type(TreeNode). You can use any other data

structure to keep as data under the TreeNode.

4. Inorder Traversal
Inorder Traversal is the one the most used variant of DFS(Depth First Search)

Traversal of the tree.

As DFS suggests, we will first focus on the depth of the chosen Node and then go to

the breadth at that level. Therefore, we will start from the root node of the tree and

go deeper-and-deeper into the left subtree with recursive manner.

When we will reach to the left-most node with the above steps, then we will visit that

current node and go to the left-most node of its right subtree(if exists).

Same steps should be followed in a recursive manner to complete the inorder

traversal. Order of those steps will be like (in recursive function)…

1. Go to left-subtree

2. Visit Node

3. Go to right-subtree
Inorder Traversal || Designed by
Anand K Parmar

Important Fact: Inorder Traversal of Binary Search Tree will always give you

Nodes in sorted manner.

5. Preorder Traversal
Preorder Traversal is another variant of DFS. Where atomic operations in a recursive

function, are as same as Inorder traversal but with a different order.

Here, we visit the current node first and then goes to the left sub-tree. After covering

every node of the left sub-tree, we will move towards the right sub-tree and visit in a

similar fashion.

Order of the steps will be like…

1. Visit Node

2. Go to left-subtree
3. Go to right-subtree

Preorder Traversal || Designed by


Anand K Parmar

6. Postorder Traversal
Similar goes with Postorder Traversal. Where we visit the left subtree and the right

subtree before visiting the current node in recursion.

So, the sequence of the steps will be…

1. Go to left-subtree

2. Go to right-subtree

3. Visit Node
Postorder Traversal || Designed by
Anand K Parmar

7. Level Order Traversal


This is a different traversal than what we have covered above. Level order traversal

follows BFS(Breadth-First Search) to visit/modify every node of the tree.

As BFS suggests, the breadth of the tree takes priority first and then move to depth. In

simple words, we will visit all the nodes present at the same level one-by-one from left

to right and then move to the next level to visit all the nodes of that level.
Level Order Traversal || Designed by
Anand K Parmar

Implementation is slightly challenging here than the above three traversals. We will

use a Queue(FIFO) data structure to implement Level order traversal, where after

visiting a Node, we simply put its left and right children to queue sequentially.

Here, the order of adding children in the queue is important as we have to traverse

left-to-right at the same level. Check out the below gist for more understanding.

8. Final Notes
Tree Traversal algorithms can be classified broadly in two categories:

 Depth-First Search (DFS) Algorithms

 Breadth-First Search (BFS) Algorithms

Depth-First Search (DFS) Algorithms have three variants:


1. Preorder Traversal (current-left-right)— Visit the current node before

visiting any nodes inside left or right subtrees.

2. Inorder Traversal (left-current-right)— Visit the current node after

visiting all nodes inside left subtree but before visiting any node within

the right subtree.

3. Postorder Traversal (left-right-current) — Visit the current node after

visiting all the nodes of left and right subtrees.

Breadth-First Search (BFS) Algorithm has one variant:

1. Level Order Traversal — Visit nodes level-by-level and left-to-right

fashion at the same level.

Check out my Github Repository for detailed code.

Important Fact: There are other tree traversal algorithms that classify as neither

Depth-First Search nor Breadth-First Search. One such algorithm is the Monte Carlo

tree search, which concentrates on the analysis of the most promising moves,

expanding the search tree based on a random sampling of the search space.

You might also like