Given a linked list, pairwise swap its adjacent nodes. The swapping of data is not allowed, only links should be changed.

## Count subtrees in a BST whose nodes lies within a given range

Given a BST, count subtrees in it whose nodes lies within a given range.   For example, consider below BST. The number of subtrees with nodes in the range [5, 20] are 6.

Given a linked list which can grow in both horizontal and vertical directions (right and down), flatten it into a sorted singly linked list provided that each horizontal and vertical list is already sorted.

## Find total ways to reach the n’th stair from the bottom

Given a stair case, find total number of ways to reach the n’th stair from bottom of the stair when a person is only allowed to climb either 1 or 2 or 3 stairs at a time.

## Construct a Cartesian Tree from In-order Traversal

Write an efficient algorithm to construct a Cartesian tree from in-order traversal. A Cartesian tree is a binary tree with the heap property: the parent of any node has smaller value than the node itself.

## Build a Binary Search Tree from a Postorder Sequence

Given a distinct sequence of keys which represents postorder traversal of a binary search tree, construct the tree from the postorder sequence.

## Build a Binary Search Tree from a Preorder Sequence

Given a distinct sequence of keys which represents preorder traversal of a binary search tree (BST), construct the tree from the postorder sequence.

## Check if a linked list of strings is palindromic

Given a linked list of strings, check whether concatenation of all values in the list together forms a palindrome. It is not permissible to construct a string out of the linked list nodes and check that string for palindrome.

## Recursive solution to sort a stack

Given a stack, sort it using recursion. The use of any other data structures (like containers in STL or Collections in Java) is not allowed.

## Ways to reach the bottom-right corner of a matrix with exactly k turns allowed

Given a M x N matrix, count number of different ways to reach the bottom-right corner of a matrix from its top-left corner with exactly K turns allowed and using only the directions right or down.

## Flatten a multilevel linked list

Given a list which can grow in both horizontal and vertical directions (right and down), flatten it into a singly linked list. The conversion should be in such a way that down node is processed before the next node for any node.

## Set next pointer to inorder successor of all nodes in binary tree

Given a binary tree where each node has one extra pointer next, set next pointer to inorder successor for all nodes in the binary tree.