A binary search works only on sorted lists or arrays. This search selects the middle which splits the entire list into two parts. First the middle is compared.

This search first compares the target value to the mid of the list. If it is not found, then it takes decision on whether.

A binary tree has a special condition that each node can have two children at maximum.

AVL trees are height balancing binary search tree. AVL tree checks the height of left and right sub-trees and assures that the difference is not more than @This difference is called Balance Factor.

BalanceFactor = height(left-sutree) − height(right-sutree)

**The below given problems find their solution using greedy algorithm approach:**

- Travelling Salesman Problem
- Prim's Minimal Spanning Tree Algorithm
- Kruskal's Minimal Spanning Tree Algorithm
- Dijkstra's Minimal Spanning Tree Algorithm
- Graph - Map Coloring
- Graph - Vertex Cover
- Knapsack Problem
- Job Scheduling Problem

**The below given problems find their solution using divide and conquer algorithm approach:**

- Fibonacci number series
- Knapsack problem
- Tower of Hanoi
- All pair shortest path by Floyd-Warshall
- Shortest path by Dijkstra
- Project scheduling

Tree traversal is a process to visit all the nodes of a tree. Because, all nodes are connected via edges (links) we always start from the root (head) node.

**There are three ways which we use to traverse a tree:**

- In-order Traversal
- Pre-order Traversal
- Post-order Traversal

**The below operations can be performed on a stack:**

- push() − adds an item to stack
- pop() − removes the top stack item
- peek() − gives value of top item without removing it
- isempty() − checks if stack is empty
- isfull() − checks if stack is full

**The following operations are commonly performed on any data-structur**e −

- Insertion − adding a data item
- Deletion − removing a data item
- Traversal − accessing and/or printing all data items
- Searching − finding a particular data item
- Sorting − arranging data items in a pre-defined sequence

Asymptotic analysis can provide three levels of mathematical binding of execution time of an algorithm −

- Best case is represented by Ω(n) notation.
- Worst case is represented by Ο(n) notation.
- Average case is represented by Θ(n) notation.

**There are three commonly used approaches to develop algorithms:**

- Greedy Approach − finding solution by choosing next best option
- Divide and Conquer − diving the problem to a minimum possible sub-problem and solving them independently
- Dynamic Programming − diving the problem to a minimum possible sub-problem and solving them combinedly

A tree is a minimally connected graph having no loops and circuits.

**The below operations can be performed on a stack:**

- enqueue() − adds an item to rear of the queue
- dequeue() − removes the item from front of the queue
- peek() − gives value of front item without removing it
- isempty() − checks if stack is empty
- isfull() − checks if stack is full

**The below given problems find their solution using divide and conquer algorithm approach :**

- Merge Sort
- Quick Sort
- Binary Search
- Strassen's Matrix Multiplication
- Closest pair (points)

Prefix Notation − * + a b + c d

Postfix Notation − a b + c d + *