## Remove redundant nodes from a path formed by a linked list

Given a linked list which stores a path formed by cells of a matrix, remove the redundant nodes in that path. The path can be both vertical and horizontal, but never diagonal.

## Find the size of the largest BST in a Binary Tree

Given a binary tree, find the size of the largest BST (Binary Search Tree) in it.

## Add a single-digit number to a linked list representing a number

Given a singly linked list whose nodes represents digits of a number, add a single-digit number to it.

## Find all Possible Topological Orderings of a DAG

Given a Directed Acyclic Graph (DAG), print all its topological orderings.

## Reverse every alternate group of k nodes in a linked list

Given a linked list, reverse every alternate group of k nodes in it where k is given positive integer.

## Implement Stack using Queue Data Structure

In this post, we will see how to implement a stack data structure using queue in C++ and Java. In other words, design a stack that supports push and pop operations using standard enqueue and dequeue operations of the queue.

## Determine if a given linked list is a palindrome or not

Given a singly linked list of integers, determine if the linked list is a palindrome or not.

## Construct a full binary tree from preorder sequence with leaf node information

Write an efficient algorithm to construct a full binary tree from a sequence of keys representing preorder traversal, and a boolean array which determines if the corresponding key in the preorder traversal is a leaf node or an internal node.

## Shuffle an array according to the given order of elements

Given an array of distinct integers, shuffle an array according to the given order of elements.

## Sort a Doubly Linked List using Merge Sort

Given a doubly linked list, sort it using merge sort algorithm.

## Activity Selection Problem using Dynamic Programming

Given a set of activities and the starting & finishing time of each activity, find the maximum number of activities that can be performed by a single person assuming that a person can only work on a single activity at a time.

## Find a sorted triplet in the given array

Given an array A[] of integers, efficiently find a sorted triplet such that A[i] < A[j] < A[k] and 0 < = i < j < k < n where n is the size of the array.